当前位置:   iOS > 正文

C++不能直接在小例子中调用构造函数

c++,constructor,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我在想,为什么我不能打电话给构造函数.即使这个小例子也无法使用以下消息进行编译:

Klassentest.cpp:24:27: error: cannot call constructor 'Sampleclass::Sampleclass' directly [-fpermissive]

码:

#include 
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 ++编译器.

谢谢您的帮助.



1> cadaniluk..:
Sampleclass::Sampleclass() *qs = new Sampleclass::Sampleclass();

是错的.Sampleclass是一个类型 while Sampleclass::Sampleclass是一个构造函数.由于语法正确

type identifier = new type();

你需要在这里指定类型.

因此,使用

Sampleclass *qs = new Sampleclass();

代替.


笔记:

如果您不知道:从C++ 11开始,您就可以做到

Sampleclass() = default;

在类定义中,将定义默认构造函数.



2> songyuanyao..:

是的,您不能直接致电ctor。

从标准class.ctor / 2

因为构造函数没有名称,所以在名称查找过程中永远找不到它们。

你可能想要

Sampleclass *qs = new Sampleclass;

然后将调用ctor。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/7996
推荐阅读
相关标签
  

闽ICP备14008679号