在我的代码中,我想声明一个我的自定义类的实例:
MyClass anInstance;
if(something){
anInstance = MyClass("instantiated like this");
}else{
anInstance = MyClass("not instantiated like that");
}
//use my anInstance object
...
我的IDE正在标记我声明anInstance
的第一行,它说:No matching constructor for initialization of 'MyClass'
这有什么违法行为吗?
答案 0 :(得分:4)
MyClass
可能缺少默认构造函数。如果是这样,您需要在声明它时对其进行初始化。像这样:
MyClass anInstance(something ? "instantiated like this" : "not instantiated like that");
答案 1 :(得分:2)
前向声明不足以执行导致指针的任何其他操作。
如果您需要执行任何操作,例如实例化该类,您将需要完整的声明。你有没有理由不只是拉入包含该类的.h文件?
答案 2 :(得分:1)
为MyClass提供一个构造函数,它采用如下字符串文字:
MyClass {
public:
MyClass(const std::string &s):str(s) {}
};
答案 3 :(得分:1)
你只需要做
class MyClass {
public:
MyClass() {}
//other code
};