UI側がC#、ネイティブコードとのブリッジ用にC++/CLIのクラスライブラリ…という構成で開発しています。まぁよくありますよね。最初は.NET 1.1で作っていたので、ArrayListとか使っていましたが、.NET 2.0なのでGenericsベースのList
C#側
void foo()
{
List<Hoge> myCollections = new List<Hoge>();
myCollections.Add(1);
myCollections.Add(2);
myCollections.Add(3);
myBar.Bar(myCollections);
}
C++/CLI側
void myBar::Bar(List<Hoge^> yourCollections)
{
....
}これをコンパイルすると、「Bar()には'1'個の引数がありません」と言われます。「1個?あるじゃないか?」と頭を悩ませること長時間。慣れた人にはわかってますよね。正解は…。
C++/CLI側 void myBar::Bar(List<Hoge^>^ yourCollections)
でした。ハットが足りないということです。エラーメッセージ不親切…と自分の不勉強を太陽系の外側まで放り投げておしまい。メッセージ不適切だから直して〜と提案したいけれど…英文が思いつかない。それに英語メッセージじゃないと当事者がわかりづらいかなぁ。日本語メッセージが出ることが問題だと取られたら困るし。