首页 > 后端开发 > C++ > 为什么使用C类时会出现'request for member '...' in '...' that is of non-class type”?

为什么使用C类时会出现'request for member '...' in '...' that is of non-class type”?

Linda Hamilton
发布: 2024-11-30 20:19:11
原创
820 人浏览过

Why Does

理解错误:“请求'...'中的成员'...',其属于非类类型”

尝试使用类时及其成员函数时,经常会出现“request for member '...' in '...' which is of non-class type”错误。要理解其原因,分析触发它的源代码至关重要。

在提供的示例中,类 Foo 拥有两个构造函数:一个不接受任何参数,另一个接受整数参数。当使用带有参数的构造函数实例化对象时,执行将按预期进行。但是,使用无参构造函数会导致上述错误。

解决问题

错误源于不正确的语法。要纠正它,应使用以下代码片段:

Foo foo2();
登录后复制

将上面的代码替换为:

Foo foo2;
登录后复制

编译器错误地解释语法

Foo foo2()
登录后复制

作为名为“foo2”的函数的声明,返回类型为“Foo”。然而,这不是预期的功能。

避免歧义

更正语法后,可能会出现另一个可能的错误,读取“重载 'Foo()' 的调用不明确”。发生这种情况是因为编译器检测到 Foo 的多个重载构造函数。要解决此问题,请显式指定要使用的构造函数,如下所示:

Foo foo2 = Foo();
登录后复制

以上是为什么使用C类时会出现'request for member '...' in '...' that is of non-class type”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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