前提
現在C++ヘッダをC++/CLIヘッダに変換を行っています。
CString型をString型にしてみたり、CArray型をList型にしてみたりなどなどをしています。
constの構造体配列の変更も同様に試みています。
コードは以下です。
<旧コード>
C++
1enum E_DATATYPE 2{ 3 E_DATATYPE_INT, 4 E_DATATYPE_CHAR, 5 E_DATATYPE_STRING 6}; 7 8namespace DataManage 9{ 10 typedef struct _ST_DATATYPE { 11 E_DATATYPE eDataType; 12 CString sDataName; 13 } ST_DATATYPE, *PST_DATATYPE; 14} 15 16const DataManage::ST_DATATYPE C_DATATYPE_LIST[] = 17{ 18 {E_DATATYPE_INT, _T("INT")}, 19 {E_DATATYPE_CHAR, _T("CHAR")}, 20 {E_DATATYPE_STRING, _T("STRING")}, 21};
<作ってみたコード>
C++
1enum E_DATATYPE 2{ 3 E_DATATYPE_INT, 4 E_DATATYPE_CHAR, 5 E_DATATYPE_STRING 6}; 7 8namespace DataManage 9{ 10 ref struct ST_DATATYPE { 11 E_DATATYPE eDataType; 12 String^ sDataName; 13 }; 14} 15 16const cli::array<DataManage::ST_DATATYPE^>^ C_DATATYPE_LIST = 17{ 18 {gcnew ST_DATATYPE(E_DATATYPE_INT, _T("INT"))}, 19 {gcnew ST_DATATYPE(E_DATATYPE_CHAR, _T("CHAR"))}, 20 {gcnew ST_DATATYPE(E_DATATYPE_STRING, _T("STRING"))}, 21};
質問
"作ってみたコード"のcli::array定義で、以下のエラーが発生しました。
・「静的ストレージ存続期間のある変数にハンドルや追跡参照型を指定することはできません」
・「関数呼び出しの引数が多すぎます」。
こちらについて対処する方法はあるのでしょうか?
また、そもそも初期化子で対応すること自体は可能なのでしょうか?
試してみたこと
・List型に変更
⇒こちらはCLI以外で初期化子禁止が出てしまい断念しました。
開発環境
Visual Studio 2015 Professional
.NET4.6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/24 02:06 編集
2019/05/24 03:47
2019/05/24 04:19