3 Stimmen

"Primärausdruck vor '.' Token-Fehler" in g++

Ich habe diese C++-Code zu generieren "primäre-Ausdruck vor '.' Token" Fehler mit G++-Compiler. Es kompiliert OK mit cl (MSVC) Compiler.

template<typename T>
class A : public std::auto_ptr<T>
{
    typedef std::auto_ptr<T> Super;
public:
    A() : Super() { }
    A(T* t) : Super(t) { }
    A(AP<T>& o) : Super(o) { }
    operator bool() { return !!Super.get(); } <--- error!
};

Was ist an diesem Code falsch?

8voto

James McNellis Punkte 337231

Super ist ein Typ. Wenn Sie die Funktion der Basisklasse aufrufen wollen, können Sie dies über this :

this->get();

Beachten Sie, dass this-> ist hier nur erforderlich, weil get() eine Mitgliedsfunktion einer abhängigen Basisklasse ist, d. h. einer Basisklasse, die von dem Vorlagenparameter T . Weitere Informationen finden Sie im Artikel Parashift C++ FAQ, "Warum erhalte ich Fehler, wenn meine von einer Vorlage abgeleitete Klasse ein Element verwendet, das sie von ihrer Vorlage-Basis-Klasse erbt?"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X