2

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^)。

4

1 回答 1

3

gcnew 总是返回一个句柄 (^)。
所以这里有一些你可以尝试的。不确定它是否真的满足您的需求-

模板参考类 SuperClass { public: void Method() { Type^ x = gcnew Type("Hello"); } };

SuperClass<String> superClass;
superClass.Method();

template <typename Type> ref class SuperClass
{
public:
    void Method()
    {
    Type x = "Hello";
    }
};

SuperClass<String^> superClass;
superClass.Method();
于 2012-06-08T03:15:45.607 回答