C++-CLI 复制构造函数的正确形式是什么?
Which is the correct form for a C++-CLI copy constructor?
我有一些这样的代码:
MyClass::MyClass(MyClass^ objToCopyFrom);
产生错误:
'type' : ref class does not have a user-defined copy constructor
当我查找 the error 时,它建议我的代码应该如下所示:
MyClass::MyClass(MyClass% objToCopyFrom);
因此,我的问题是,哪个版本是正确的或者它们都正确?
只有你的第二个版本是正确的:
MyClass::MyClass(MyClass% objToCopyFrom);
或其变体:
MyClass::MyClass(const MyClass% objToCopyFrom);
MyClass%
是所谓的 Tracking Reference,它是本机 C++ 中引用的概念等价物,仅适用于 CLR 类型。
虽然 copy constructors in native C++ 可以有许多不同的签名,但它们的共同点是被复制的 other 对象作为 参考。 C++/CLI 保持接近该原则,但使用其自己的对象引用类型,即跟踪引用。
我有一些这样的代码:
MyClass::MyClass(MyClass^ objToCopyFrom);
产生错误:
'type' : ref class does not have a user-defined copy constructor
当我查找 the error 时,它建议我的代码应该如下所示:
MyClass::MyClass(MyClass% objToCopyFrom);
因此,我的问题是,哪个版本是正确的或者它们都正确?
只有你的第二个版本是正确的:
MyClass::MyClass(MyClass% objToCopyFrom);
或其变体:
MyClass::MyClass(const MyClass% objToCopyFrom);
MyClass%
是所谓的 Tracking Reference,它是本机 C++ 中引用的概念等价物,仅适用于 CLR 类型。
虽然 copy constructors in native C++ 可以有许多不同的签名,但它们的共同点是被复制的 other 对象作为 参考。 C++/CLI 保持接近该原则,但使用其自己的对象引用类型,即跟踪引用。