error: class 'B' does not have any field named 'i'
-
Hallöchen,
den Fehler im Titel bekomm ich bei folgendem Konstrukt:
struct A
{
int i;
virtual ~A() = 0;
};struct B: A
{
B(int i_):
i(i_){}//Hier
};Das finde ich sehr, sehr komisch. Sollte i nicht von A abgeleitet, also auch in B sein?
Vielen Dank im Voraus

-
????? schrieb:
struct A { int i; virtual ~A() = 0; }; struct B: A { B(int i_): i(i_){}//Hier };
-
Ahh, den Virtuellen Konstruktor kann man weglassen...
-
Ich meinte Destruktor.

-
????? schrieb:
Ahh, den Virtuellen Konstruktor kann man weglassen...
????? schrieb:
Ich meinte Destruktor.

Kommt drauf an... als Regel gilt folgendes:
Bei einer Klasse / Strukt die in der Basisklassen-Liste steht ist der Destruktor entweder public virtual oder protected non-virtual - je nachdem ob delete auf einen Pointer der Basisklasse anwendbar sein soll oder nicht.
Simon
-
Jetzkannmanslesen schrieb:
????? schrieb:
struct A { A(int ii) : i(ii){} int i; virtual ~A() = 0; }; struct B: A { B(int i_):A(i_){}//Hier };Eine KLasse kann nur ihre eigenen Member per Initialisierungsliste initialisieren:
-
Tachyon schrieb:
Jetzkannmanslesen schrieb:
????? schrieb:
struct A { A(int ii) : i(ii){} int i; virtual ~A() = 0; }; struct B: A { B(int i_):A(i_){}//Hier };Eine KLasse kann nur ihre eigenen Member per Initialisierungsliste initialisieren:
Alles klar, vielen dank!

-
müsste nicht noch ein public (oder halt ein anderer sichtbarkeits indentifier) zur klasse B beid er vererbung?!
-
Skym0sh0 schrieb:
müsste nicht noch ein public (oder halt ein anderer sichtbarkeits indentifier) zur klasse B beid er vererbung?!
structs werden per default public vererbt.