我想知道为什么不能调用构造函数。即使这个小的示例也无法使用以下消息进行编译:
Klassentest.cpp:24:27: error: cannot call constructor 'Sampleclass::Sampleclass' directly [-fpermissive]
码:
#include <iostream>
using namespace std;
class Sampleclass
{
public:
Sampleclass();
};
Sampleclass::Sampleclass(){
}
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
Sampleclass::Sampleclass() *qs = new Sampleclass::Sampleclass();
return 0;
}
我在4.9.3-1版中使用了Cygwin g++编译器。
感谢您的帮助。
最佳答案
Sampleclass::Sampleclass() *qs = new Sampleclass::Sampleclass();
是错的。
Sampleclass
是类型,而Sampleclass::Sampleclass
是构造函数。由于正确的语法是type identifier = new type();
您需要在此处指定类型。
因此,使用
Sampleclass *qs = new Sampleclass();
代替。
笔记:
Sampleclass() = default;
在类定义中,将定义默认构造函数。