赞
踩
我在想,为什么我不能打电话给构造函数.即使这个小例子也无法使用以下消息进行编译:
Klassentest.cpp:24:27: error: cannot call constructor 'Sampleclass::Sampleclass' directly [-fpermissive]
码:
#includeusing 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
是一个类型 while Sampleclass::Sampleclass
是一个构造函数.由于语法正确
type identifier = new type();
你需要在这里指定类型.
因此,使用
Sampleclass *qs = new Sampleclass();
代替.
笔记:
如果您不知道:从C++ 11开始,您就可以做到
Sampleclass() = default;
在类定义中,将定义默认构造函数.
是的,您不能直接致电ctor。
从标准class.ctor / 2
因为构造函数没有名称,所以在名称查找过程中永远找不到它们。
你可能想要
Sampleclass *qs = new Sampleclass;
然后将调用ctor。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。