0

我对 VS2012 IDE 有一些分歧,我最近从 C# 迁移到 C++/CLI,我可能几乎不知道,但除了这个小问题,一切都进展顺利。我非常了解参数化类型,但我似乎无法弄清楚如何返回具有参数化类型的东西。我在多个网站上查找了所有内容,发现有两种方法可以做到这一点:ageneric和 atemplate

这就是我在 C# 中的做法:public static Dictionary<TKey, TVal> MakeDictionary<TKey, TVal>(List<TKey> Keys, List<TVal> Values){/*code*/}在 C++/CLI 中我尝试过:

generic<typename TKey, typename TVal> static Dictionary<TKey, TVal> ^MakeDictionary<TKey, TVal>(List<TKey> ^Keys, List<TVal> ^Values){/*code*/}

template<typename TKey, typename TVal> static Dictionary<TKey, TVal> ^MakeDictionary<TKey, TVal>(List<TKey> ^Keys, List<TVal> ^Values){/*code*/}

除其他外,编译器总是遇到相同的问题,无法识别 TKey 和 TVal。

我的问题:如何指定类型参数,我做错了什么?

4

1 回答 1

1

您未正确组合指定泛型类型参数的 C# 和 C++/CLI 语法。在 C# 中,它是通过将它们放在<brackets>方法名称之后来完成的。在 C++/CLI 中,它是通过将它们放在generic<>子句中来完成的。所以只需删除方法名称后面的那些:

generic<typename TKey, typename TVal> 
static Dictionary<TKey, TVal>^  MakeDictionary(List<TKey>^ Keys, List<TVal>^ Values) {}
于 2013-03-28T02:11:44.017 回答