在以下代码中获取non-handle
类型的适当方法是什么:
template <typename Type> ref class SuperClass
{
public:
void Method()
{
Type x = gcnew ???? (...);
// I want it to be instantiated into 'String^ x = gcnew String(...).
// Is there a way to "dereference" the handle type in C++ \ CLI ?
}
};
SuperClass<String^> superClass;
superClass.Method(); // <---- Won't compile
此外,句柄类型作为模板参数的使用是强制性的(这是更大范例的一部分,我不能简单地将模板类型更改为String
而不是String^
)。
答案 0 :(得分:3)
gcnew总是返回一个句柄(^) 所以这是你可以尝试的东西。不确定它是否真的符合您的需求 -
<击> 模板ref类SuperClass { 上市: void方法() { 键入^ x = gcnew类型(“Hello”); } }; 击>
<击>SuperClass<String> superClass;
superClass.Method();
击> <击> 撞击>
template <typename Type> ref class SuperClass
{
public:
void Method()
{
Type x = "Hello";
}
};
SuperClass<String^> superClass;
superClass.Method();