2017-04-13 3 views
2

ich eine Interface-Klasse haben, aber ich möchte, dass alle abgeleiteten Klassen, das virtuelle destructor implementieren:Die richtige Platzierung für die Standard rein virtuellen Destruktor in C++ 11

// Interface.h 
class Interface { 
    virtual ~Interface() = 0; 
}; 

Interface::~Interface() = default; 

Das Problem ist, dass in diesem Fall habe ich eine Linker-Fehler wegen doppelter Symbole.

Ich kann die Definition in .cpp Datei platzieren, aber ich würde gerne wissen, ob es elegantere Lösung gibt?

+4

Vielleicht 'Inline-Schnittstelle :: ~ Interface() = Standard;'? –

+1

Funktion (Destruktor) kann nicht abstrakt sein und gleichzeitig Implementierung (Standard) haben. –

+4

@AndrewKashpur, ja kann es: http://StackOverflow.com/Questions/37777606/C11-interface-pure-virtual-Destructor – Alex

Antwort

Verwandte Themen