C++ 表达式必须修改为左值

C++ 表达式必须修改为左值,c++,operator-overloading,lvalue,C++,Operator Overloading,Lvalue,被视为函数声明。这样做:- Derived d2(); 问题是你的“d2”。语句d2不像您认为的那样创建名为d2的派生对象。正确的选择是: Derived d1(10),d2,d3; d2 = d1; /////ahaa it's working 声明 Derived d2; Derived d2 = Derived(); Derived d2(0); // or any other integer 告诉编译器您正在定义一个不带参数并返回派生类型的函数 有关详细说明,请参

被视为函数声明。这样做:-

Derived d2();

问题是你的“d2”。语句d2不像您认为的那样创建名为d2的派生对象。正确的选择是:

Derived d1(10),d2,d3;
d2 = d1;          /////ahaa it's working
声明

Derived d2;
Derived d2 = Derived();
Derived d2(0); // or any other integer
告诉编译器您正在定义一个不带参数并返回派生类型的函数

有关详细说明,请参见此处:

你的问题是什么?你问问题时有没有看预览?正如你所看到的,它是相当不可读的。请修复格式。d2声明了一个不带参数并返回派生函数的函数,注意。谢谢,我想我将使用默认构造函数调用。
Derived d2;
Derived d2 = Derived();
Derived d2(0); // or any other integer
Derived d2();