Home

Das Semikolon aus einer anderen Welt

Dienstag, 25. Januar 2011 | Autor:

#include "../../math/src/FInterpolation.hh"

/** Interface class for seed lines such as lines, curves, polylines. */
class SeedCurve
{
	public:
		virtual FPosition ipol(double t) = 0;
		virtual vector<FPosition> getPositions(positive number_of_seeds) = 0;
};

gibt eine Feh­ler­mel­dung:

SeedLine.hh:9:1: error: multiple types in one declaration

Meh­re­re Typen in einer Dekla­ra­ti­on.

Der Aus­lö­ser für die­se Mel­dung ist sim­pel, aber viel­leicht nicht offen­sicht­lich: Nach der Dekla­ra­ti­on eines neu­en „Typs”, d.h. einer Klas­se oder eines Struc­ts, wur­de das Semi­ko­lon ver­ges­sen - aller­dings nicht an der Stel­le, die die Feh­ler­mel­dung nennt! 😉

Wie bei ver­ges­se­nen Semi­ko­lons üblich, wirkt sich der Feh­ler erst spä­ter im Code aus. Spe­zi­ell bei Fäl­len wie die­sem liegt die Ursa­che des Feh­ler oft sogar in einer ganz ande­ren Datei!

In unse­rem Bei­spiel sieht das so aus: Irgend­wo #inclu­den wir ein paar Hea­der - unter ande­rem den, den uns die Feh­ler­mel­dung nennt:

#include "DCELHelper.hh"
#include "SeedLine.hh"

Der Prä­pro­zes­sor löst die inclu­des auf und macht dar­aus fol­gen­des:

class DCELHelper
{
    ...
}

class SeedCurve
{
	public:
		virtual FPosition ipol(double t) = 0;
		virtual vector <FPosition> getPositions(positive number_of_seeds) = 0;
};

und sie­he da - hin­ter der Klas­se DCEL­Hel­per fehlt das Semi­ko­lon! So ist’s bes­ser:

class DCELHelper
{
    ...
}; // <-hier

In der Pra­xis ist die betref­fen­de Stel­le übri­gens nicht sooo schwer zu fin­den, weil man ja in der Regel weiß „Ich habe gera­de die Klas­se Sound­so geschrie­ben, jetzt kommt ein Feh­ler - naja, dann wird es wohl auch an eben der Klas­se lie­gen.”

Update: Offen­bar spu­cken neue­re Ver­sio­nen des GCC fol­gen­de, hilf­rei­che­re Feh­ler­mel­dung aus: error: expected ‘;’ after class definition Das ist doch mal eine sinn­vol­le Neue­rung! 🙂

Tags » , «

Trackback: Trackback-URL |  Feed zum Beitrag: RSS 2.0
Thema: Sezierte C++-Käfer

Diesen Beitrag kommentieren.

2 Kommentare

  1. 1
    christian667 

    Wow.. gut erklärt, hat mir echt gehol­fen! Dan­ke!

  2. 2
    Nico 

    Gern gesche­hen! 🙂

Kommentar abgeben