【发布时间】:2015-10-07 22:31:03
【问题描述】:
我正在尝试实例化一个没有默认构造函数的对象,以便可以从类中的任何方法引用它。我在头文件中声明了它,但编译器说创建它的类的构造函数必须显式初始化成员,我不知道该怎么做。
非常感谢您的回答,提前谢谢您!
sn-p:
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;
}
【问题讨论】:
-
可以创建一个指针,在初始化的地方动态分配。
-
如果您可以在初始化列表中进行初始化,那是您最好的选择,请参阅this question。所以应该是
MyClass::MyClass() : myObject(60) { } -
初始化列表成功了,非常感谢!!!
-
我不明白这个没有默认构造函数的对象,因此可以从类内的任何方法中引用它。你能在这里解释一下你的逻辑吗? AFAIK,任何成员都可以被任何其他成员引用,无论其结构如何。
标签: c++ parameters constructor