class b:public a| a:no appropriate default constructor available
-
beim erzeugen eines objects von klasse b:
class a { public: a(parameter i); ~a() }; class b:public a { public: b(parameter f); ~b(); };kommt die fehlermeldung
"a:no appropriate default constructor available"das hinzufügen eines standart konstruktors bringt jedoch nichts ausser einer weiteren fehlermeldung:
"public: __thiscall a::a(void)" (??0Game@@QAE@XZ) referenced in function "public: __thiscall b::b(parameter f)" (??0Sprite@@QAE@PBDHH@Z)error: 1 unresolved external
die msdn hat mir nicht wirklich weitergeholfen also frage ich ma hier
mfg
-
Da du keinen Default Konstruktor in A hast musst du den Überladenen in der Initialisierungsliste deines Konstruktors in B als erstes aufrufen:
b::b( parameter f ) : a( f ){}BR
evilissimo
-
Und wenn Du einen Default Constructor einbaust solltest Du ihm auch einen Rumpf spendieren, sprich implementieren (das sagt die zweite Fehlermeldung).
-
b::b() :a() { }{/cpp] geht nicht [cpp] b::b() :a(parameter f) { }auch nicht
bei beiden kommt die fehlermeldung "public thiscall.."
edit: ok habe implementiert, jetzt stürzt das programm ab

-
Das ist auch nicht korrekt. Zumindest nicht so wie du uns deine Klasse gezeigt hast
class A { protected: int var; public: // Standard Konstruktor A() : var(0) {} // Überladener Konstruktor A( int i ) :var(i) {} virtual ~A(){} // Destruktor }; class B : public A { public: // Standard Konstruktor B() // A() wird automatisch aufgerufen {} B( int i ) : A(i) // Explizit Überladung A( int ) aufrufen {} B( foobar fb ) // Auch hier automatisch A() aufgerufen {} };Eventuell verstehst du das so eher.
BR
evilissimo