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.


Anmelden zum Antworten