代码如下

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

为什么?

===============>>#1 票数:2 已采纳

编码

 B b(A());

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

请参阅C ++最烦恼的解析

  ask by user1899020 translate from so

未解决问题?本站智能推荐: