0

代码如下

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;
}

为什么?

4

1 回答 1

2

编码

 B b(A());

不是声明 的对象B,而是声明一个函数的函数声明,该函数b返回一个类型的对象B并接受一个(未命名的)参数,该参数是一个返回类型的函数A(并且不接受任何输入)。(引用下面的链接)。因此,您看到了该错误。

参见C++ 最令人头疼的解析

于 2013-04-16T02:53:51.420 回答