我有以下三个类定义:
class String
{
public:
String() {}
String(const char *) {}
};
class ClassA
{
public:
ClassA(const String &) {}
};
class ClassB
{
public:
ClassB(const ClassA &, const String & = String()) {}
void method() {}
};
现在假设我想创建一个实例ClassB
:
String name("test");
ClassA item(ClassB(name));
这不起作用:
error: request for member 'method' in 'item', which is of non-class
type 'ClassA ()(ClassB)'
这个错误是什么意思?这是什么奇怪的类型ClassA ()(ClassB)
编译器一直引用?
这就是所谓的最令人烦恼的解析问题.
ClassA item(ClassB(name));
应该是:
ClassB b(name);
ClassA item(b);
or:
ClassA item( (ClassB(name)) );
另请查看:最令人烦恼的解析:为什么 A a(()); 不这样做?工作?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)