首页 > 后端开发 > C++ > 为什么我的无参构造函数会导致'请求成员”错误?

为什么我的无参构造函数会导致'请求成员”错误?

Linda Hamilton
发布: 2024-12-08 21:26:11
原创
514 人浏览过

Why Does My No-Argument Constructor Cause a

重载构造函数和类成员访问错误

考虑一个具有两个构造函数的类,一个没有参数,另一个有一个整数参数。当按预期使用后一个构造函数创建对象时,使用无参构造函数会导致错误。

例如,编译以下代码片段:

class Foo
{
public:
    Foo() {};
    Foo(int a) {};
    void bar() {};
};

int main()
{
    // This works...
    Foo foo1(1);
    foo1.bar();

    // This fails...
    Foo foo2();
    foo2.bar();

    return 0;
}
登录后复制

会生成以下错误:

error: request for member 'bar' in 'foo2', which is of non-class type 'Foo ()()'
登录后复制

出现这个错误是因为编译器解释了代码 Foo foo2();作为名称为“foo2”且返回类型为“Foo”的函数声明。但是,您打算使用无参数构造函数实例化“Foo”类型的对象。

要解决此问题,请修改 Foo foo2();到 Foo foo2;。此更改通知编译器您要使用默认构造函数创建对象。

或者,由于同时存在无参数和单参数构造函数,您可能会遇到指示重载构造函数中存在歧义的错误。在这种情况下,使用 Foo foo2{}; 显式调用无参构造函数;将解决歧义。

以上是为什么我的无参构造函数会导致'请求成员”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板