expected type-specifier
-
Hallo,
ich bräuchte bitte eure HIlfe. Mir ist C++ ganz neu und beim Versuch die Deklaration von der Definition zu trennen erhalten ich den Fehler: expected type-specifier
// Deklaration im Header File
void addElement(T const &element)throw(std::overflow_error);// Definition im .cpp File
void Listptr::addElement(const void *element)throw(std::overflow_error){
if(writeCounter_ > listSize_){
throw std::overflow_error("Size of the list exceeded");
}
elements_[writeCounter_] = (void *)element;
writeCounter_++;
}Weiß jemand wie dieser Error zu behenbe ist?
Vielen Dank
-
void addElement(T const &element)
sagt mir das ist ein template. Template-Definitionen kommen immer mit in den Header, sonst gibts erstmal Linker-Fehler.
Dann passen die Signaturen deiner Deklaration und Definition nicht zusammen (T const& vs const void*).
-
Ausserdem würde ich die Finger von Exception Sepcifications lassen - sie sind nicht sinnvoll!
-
Hallo und vielen Dank für eure Antworten,
den Fehler expected-type hab ich nun lösen können. Und das Template funktioniert auch. Ich hab Definition in ein .cpp file ausgelagert und dieses im Header file mit #include wieder hinzugefügt, damit eine Trennung von Deklaration und Definiton vorhanden ist.
@theta:
Die Specification von Exceptions. Ist damit dieses throw gemeint?throw std::overflow_error("Size of the list exceeded");
Vielen Dank und lg,
-
123456789 schrieb:
Die Specification von Exceptions. Ist damit dieses throw gemeint?
throw std::overflow_error("Size of the list exceeded");
Nein, das throw an der Funktionsdeklaration:
throw(std::overflow_error)
Das wird allgemein als nette Idee, aber am Ende wenig sinnvoll angesehen.
-
ok, danke.
Soll ich anstatt dessen
throw
angeben, was ja (so viel ich weiß) bedeuted, dass beliebig viele Exceptions geworfen werden können?
Oder soll ich den Ausdruck überhaupt weglassen?Vielen Dank,
-
Die Spezifikation, was die Methode werfen könnte, kannst du komplett weglassen.