C++/CLIでarrayが使えねーと思ったらstd::arrayはダメだったという話
タイトルで内容完結してるけどつまりそういうこと。(手抜き)
久しぶりにC++/CLIをさわる機会があったときに、Point型の配列を作りたかったから
array<Point>^ points = gcnew array<Point>(N);
みたいなコードを書いたんだけどどうもコンパイルが通らない。
で、調べてみても全く同じコードしかヒットしなくて頭抱えてたんだけど、どうやらこのarrayコンテナはstd::arrayで、cliは他にcli::arrayがあるらしく、Pointみたいな.NETの構造体やクラスを格納する場合はこっちを使わないとダメらしい。
というわけで
cli::array<Point>^ points = gcnew cli::array<Point>(N);
でめでたく動いた。
C++/CLIはstd::vectorとかも使えないから大変不便だし、何が使えて何が使えないのかの基準もよくわからんから慣れるまでまだまだ掛かりそうだ。あんまりコイツに慣れたいとも思わないが。
そのうちそこらをまとめたいけど、最近どうにも時間がなく寝不足なのでこの辺で。