.NET
.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。
70 件の質問
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
↓C++/CLIのソースコードです。
#include <iostream>//printfの使用で必要
using namespace System;
using namespace System::Collections::Generic;
ref class testclass1 {
public:
float x1;
System::Collections::Generic::List<int>^ list1;//コンパイルは通る
testclass1() {//コンストラクター
//①この下の行 E0291 クラス "System::Collections::Generic::List<int>" の既定のコンストラクターは存在しません
list1 = gcnew System::Collections::Generic::List<int>;
}
```};
int main()
{
```sql
printf("Hello World!\n");
```}
上記の①の箇所 gcnewのある行でコンパイルが通りません。
エラーの意味も理解できません。
どうすればコンパイルが通りますか。教えて下さい。
VisualStudioのバージョン、Windows SDKのバージョン、プラットフォームツールセットのバージョン、C++言語のバージョンはいくつなのでしょう?
手元のVS2022だとE0291はインテリセンスのエラーメッセージで出てますがビルドは通ります…
古いツールセットとC++20を組み合わせるとC2338が出てビルドが失敗しますが、E0291では失敗しません。
インテリセンスでのチェックはビルドよりも処理を甘くすることで軽くしているので、正式なビルドパスではエラーにならないようなコードが誤判定されることがります。(C/C++言語はマクロやテンプレートで複雑なので)
そのため引数なしのコンストラクタを見つけそこなっているのでしょう。