Frage zu Klassen
-
Hallo!
Ich bin nicht sonderlich gut in C++. Habe Folgenden Code:#include <iostream> using namespace std; class AClass{ public: AClass(int); private: int a; }; AClass::AClass(int eing) {a=eing;} class BClass{ public: AClass A; BClass(void); }; BClass::BClass() { //hier fehlt was } int main() { return 0; }
Was muss ich nun bei BClass::BClass() reinschreiben damit mein Programm funktioniert. Der Compiler gibt aus: "no matching function for call to `AClass::AClass()'"
Wäre froh wenn mir schnell geholfen wird!
-
Du kannst (bzw. musst) dafür die Initialisierungsliste des Konstruktors verwenden.
// AClass - Konstruktor AClass::AClass(int eing) : a(eing) // Initialisierungsliste, um Member zu initialisieren { } // BClass - Konstruktor BClass::BClass() : A(3) // Konstruktor von A aufrufen (beispielsweise mit Argument 3) { }
-
Danke, hätt ich auch selbst drauf kommen können...
-
Ich bin zwar auch nicht der bringer in C++ aber ich hoffe ich kann die helfen ^^
#include <iostream> using namespace std; class AClass{ int a; public: //das privat kann man sich sparen den alles //in einer Klasse ist bis Public: Privat AClass(int eing); // da muss das eing rein AClass(); // Einfacher Kunstruktor }; AClass::AClass() {}; AClass::AClass(int eing): a(eing) {} class BClass{ public: AClass A; BClass(); //wenn das ein einfacher von Kontruktor werden soll //darf nichts in den klammer nicht stehen }; BClass::BClass() { } int main() { return 0; }
-
Ich glaube, er hat beabsichtigt, dass in
A
kein Standardkonstruktor zur Verfügung steht.Mir ist grad noch was aufgefallen:
using namespace
sollte man in Headern immer vermeiden, da dann für alle Dateien, die den Header inkludieren, der ganze Namensraum offengelegt wird.