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);
当 运行 测试我创建的 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);