代码如下
class A {};
class B
{
public:
B(const A& a) {}
void fun() {}
};
int main(int argc, char *argv[])
{
B b(A());
b.fun(); // Error: left of '.fun' must have class/struct/union
A a;
B b2(a);
b2.fun(); //Okay
return 0;
}
为什么?
答案 0 :(得分:2)
代码
B b(A());
不是声明B
的对象,而是声明函数b
的函数声明,它返回类型为B
的对象,并采用单个(未命名)参数函数返回类型A
(并且不进行输入)。 (引自下面的链接)。因此,您看到了这个错误。