Ich kann geschützte Funktion in meiner Basisklasse nicht aufrufen. Warum? Es sieht etwa so aus:kann nicht Basisklasse geschützte Funktionen aufrufen?
class B : B2
{
public:
virtual f1(B*)=0;
protected:
virtual f2(B*) { codehere(); }
}
class D : public B
{
public:
virtual f1(B*b) { return f2(b); }
protected:
virtual f2(B*b) { return b->f2(this); }
}
In msvc ich den Fehler Fehler C2248 erhalten: 'name :: Klasse :: f2': kann nicht geschützte Mitglied in der Klasse deklariert Zugriff 'name :: class'
In gcc Ich bekomme einen Fehler: 'virtual int name :: class :: f2()' ist geschützt.
Warum ist das? Ich dachte, der Punkt geschützter Member ist, dass abgeleitete Klassen aufgerufen werden.
Zumindest fügen Sie Code hinzu, der die Fehler kompiliert und generiert, die Sie beheben möchten. Der obige Code weist so viele andere Syntaxfehler auf, dass die Lösung Ihres Problems unwiderruflich wird. –
ich stimme mit martin überein. Wenn Sie möchten, dass wir Ihnen helfen, investieren Sie einige Zeit in Ihren Code C++ (ohne Rückgabetypen, Semikolons und andere Sachen) –