ここから本文です

VS2017になってからarray<String^>^でエラーが出ます。 具体的には以下のコード...

smi********さん

2018/5/2523:54:27

VS2017になってからarray<String^>^でエラーが出ます。

具体的には以下のコードが通らなくなったんですけど、
もしよい対策等があれば教えてください。よろしくお願いします。

private: System::Void MyForm_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
array<String^>^ files = static_cast<array<String^>^>(e->Data->GetData(DataFormats::FileDrop, true));
String^ file_name = files[0];
//中略
}

補足以下のようなエラーが出てます。
・エラー:
エラー (アクティブ) E0442 クラス テンプレート "std::array" の引数が少なすぎます
エラー (アクティブ) E2242 式には pointer-to-object 型または handle-to-C++/CLI-array 型が必要です
エラー C2976 'std::array': テンプレート 引数の数が少なすぎます
エラー C3699 '^': この間接指定を型 'std::array' で使用できません
エラー C2440 'static_cast': 'System::Object ^' から 'std::array *' に変換できません。
エラー C2027 認識できない型 'std::array' が使われています。

・また、以下のnamespaceを使用しています。
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

・共通言語ランタイム サポート (/clr)になってます。
お手上げ状態です。もしかすると新規のプロジェクトに再記述すべきなのかもしれません。

閲覧数:
236
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tre********さん

2018/5/2611:36:34

エラーコードは?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/5/28 23:29:11

cli::array<String^>^ files = static_cast<cli::array<String^>^>(e->Data->GetData(DataFormats::FileDrop, true));
と、書いてみたら、とりあえずうまく行きました。
おかげさまで、~::arrayにたどり着くことができました。
ありがとうございました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる