尝试使用类时及其成员函数时,经常会出现“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中文网其他相关文章!