我有一些像这样的代码:
MyClass::MyClass(MyClass^ objToCopyFrom);
产生错误:
'类型' :ref类没有用户定义的复制构造函数
当我查找the error时,它表明我的代码应如下所示:
MyClass::MyClass(MyClass% objToCopyFrom);
因此,我的问题是,哪个版本是正确的还是正确的?
答案 0 :(得分:1)
只有你的第二个版本是正确的:
MyClass::MyClass(MyClass% objToCopyFrom);
或其变体:
MyClass::MyClass(const MyClass% objToCopyFrom);
MyClass%
是一个所谓的Tracking Reference,它是本机C ++中引用的概念等价,仅适用于CLR类型。
虽然copy constructors in native C++可以有许多不同的签名,但它们的共同之处在于,正在复制的其他对象是作为引用。 C ++ / CLI保持接近该原则,但使用自己类型的对象引用,即跟踪引用。