C ++:在没有左值的情况下调用时复制构造函数不起作用

C++: Copy constructor doesn't work when calling without lvalue

当 运行 测试我创建的 class 时,我遇到了一些奇怪的事情。

当我调用 class 的常规构造函数时:

MyClass::MyClass(const Type1& arg1, const Type2& arg2);

采用以下方式:

MyClass(arg1, arg2);

它完美运行。

但是当我调用复制构造函数时:

MyClass::MyClass(const MyClass& other);

同理:

MyClass(myClassInstance);

然后编译器说:"redeclaration of 'MyClass myClassInstance'";

MyClass(myClassInstance);

你在这里调用的不是编译器假设的复制构造函数,

int a;
int (a);

你要的是

MyClass anotherInstance(myClassInstance);

MyClass {myClassInstance};

你想要做的是,创建一个 MyClass 的实例,并将该对象作为参数传递给创建新实例(使用复制构造函数)。

MyClass obj_1(arg1, arg2);
MyClass obj_2(obj_1);