• 締切済み

[C++/CLI]可変個引数について

visual studio 2005を使用し、C++で作ったクラスをVBで呼び出せるようにするため、C++でラッパクラスを作成中です。 ネイティブコードで可変個の引数を表すには、 Test(PSTR str, ...){ char ch[1024]; va_list ap; va_start(ap, str); wvsprintf( ch, str, ap ); va_end(ap);       ・       ・       ・ } のようにすればOKだったのですが、マネージコードで可変個の引数を使用するにはどうすれば良いのでしょうか。「ParamArray」というキーワードを使うのでしょうか? また、ラッパクラスではないクラスの可変個引数を使用しているメソッドで、 「warning C4793: 'vararg' : 関数 'DWORD CTest::Log(PSTR,...)' 用にネイティブ コードの生成が発生します」 というワーニングがでています。これは無視しても大丈夫なのでしょうか? 申し訳ございませんが、分かる方がいましたら回答をお願いします。

みんなの回答

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

ネイティブコードで生成されるのは仕方の無いことでしょうね。。。 MSDNにはva_argマクロ系を共通言語ラインタイムで使用する場合 渡す引数を明示的にキャストしろと書いてありました。 http://msdn2.microsoft.com/ja-jp/library/kb57fad8(VS.80).aspx コンパイルオプションに注意する必要がありそうです。 http://msdn2.microsoft.com/ja-jp/library/ffkc918h(VS.80).aspx

monakichi
質問者

お礼

遅くなりましたが、回答ありがとうございました。 コンパイルオプションは設定していたのですが、va_argマクロ使用時の、渡す引数のキャストはやっていませんでした。 「ParamArray」を使ってコンパイルしましたが、エラーになってうので、別の方法がないか調べているところです。

関連するQ&A