C ++ CLI句柄类型

时间:2012-06-08 03:00:00

标签: c# c++ .net c++-cli

在以下代码中获取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^)。

1 个答案:

答案 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();