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

时间:2018-01-24 12:37:51

标签: c++ constructor copy-constructor

在我创建的类上运行测试时遇到了一些奇怪的事情。

当我打电话给班级的常规构造函数时:

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

以下列方式:

MyClass(arg1, arg2);

效果很好。

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

MyClass::MyClass(const MyClass& other);

以同样的方式:

MyClass(myClassInstance);

然后编译器说:"重新声明' MyClass myClassInstance'";

2 个答案:

答案 0 :(得分:1)

MyClass(myClassInstance);

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

int a;
int (a);

你想要的是

MyClass anotherInstance(myClassInstance);

MyClass {myClassInstance};

答案 1 :(得分:0)

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

p_explode(string_delimiter, string_string, int_number_values_each_page)