Ich versuche ein Objekt zu instanziieren, das keinen Standardkonstruktor hat, so dass es von allen Methoden innerhalb der Klasse referenziert werden kann. Ich habe es in meiner Header-Datei deklariert, aber der Compiler sagt, dass der Konstruktor für die Klasse, die ihn erzeugt, das Mitglied explizit initialisieren muss, und ich kann nicht herausfinden, wie das geht.Explizites Initialisieren von Element, das keinen Standardkonstruktor hat
Wirklich zu schätzen Ihre Antworten, danke im Voraus!
Die Schnipsel:
MyClass.h
include "MyOtherClass.h"
class myClass {
private:
MyOtherClass myObject;
public:
MyClass();
~MyClass();
void myMethod();
}
MyClass.cpp
include "MyClass.h"
MyClass::MyClass() {
MyOtherClass myObject (60);
myObject.doSomething();
}
MyClass::myMethod() {
myObject.doSomething();
}
MyOtherClass.h
class MyOtherClass {
private:
int aNumber;
public:
MyOtherClass (int someNumber);
~MyOtherClass();
void doSomething();
}
MyOtherClass.cpp
include "MyOtherClass.h"
MyOtherClass::MyOtherClass (int someNumber) {
aNumber = someNumber;
}
void MyOtherClass::doSomething() {
std::cout << aNumber;
}
Sie können einen Zeiger erstellen und ihn dynamisch an der Initialisierungssite zuweisen. – vukung
Wenn Sie die Initialisierung in der Initialisierungsliste tun können, ist dies die beste Option, siehe [diese Frage] (http://stackoverflow.com/questions/3704722/initializing-class-without-default-constructor). So wäre es 'MyClass :: MyClass(): myObject (60) {}' – vukung
Die Initialisierungsliste funktionierte, vielen Dank !!! – Lajotas