kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

何かが足りない

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)

でした。ハットが足りないということです。エラーメッセージ不親切…と自分の不勉強を太陽系の外側まで放り投げておしまい。メッセージ不適切だから直して〜と提案したいけれど…英文が思いつかない。それに英語メッセージじゃないと当事者がわかりづらいかなぁ。日本語メッセージが出ることが問題だと取られたら困るし。