0

私は VS2012 IDE に意見の相違があります。最近、C# から C++/CLI に移行しましたが、ほとんどわからないかもしれませんが、この 1 つの小さな隆起を除いて、すべてが順調に進んでいます。私はパラメーター化された型をよく理解していますが、パラメーター化された型を持つものを返す方法を理解できないようです。複数の Web サイトですべてを調べたところ、これには agenericと a の2 つの方法があることがわかりました。template

これは私が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 構文を不適切に組み合わせています。<brackets>C# では、メソッド名の後にそれらを配置することによって行われます。generic<>C++/CLI では、それらを句に入れることによって行われます。したがって、メソッド名の後にそれらをドロップするだけです:

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