C++/CLI エラーE0291 でコンパイルが通らない

huahi11115 160 評価のポイント
2024-05-31T02:23:44.62+00:00

↓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のある行でコンパイルが通りません。

エラーの意味も理解できません。

どうすればコンパイルが通りますか。教えて下さい。

.NET
.NET
.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。
48 件の質問
C++
C++
C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
14 件の質問
0 件のコメント コメントはありません
{count} 件の投票

承認済みの回答
  1. gekka 8,061 評価のポイント MVP
    2024-05-31T09:41:16.62+00:00

    VisualStudioのバージョン、Windows SDKのバージョン、プラットフォームツールセットのバージョン、C++言語のバージョンはいくつなのでしょう?

    手元のVS2022だとE0291はインテリセンスのエラーメッセージで出てますがビルドは通ります…
    古いツールセットとC++20を組み合わせるとC2338が出てビルドが失敗しますが、E0291では失敗しません。

    インテリセンスでのチェックはビルドよりも処理を甘くすることで軽くしているので、正式なビルドパスではエラーにならないようなコードが誤判定されることがります。(C/C++言語はマクロやテンプレートで複雑なので)
    そのため引数なしのコンストラクタを見つけそこなっているのでしょう。

    1 人がこの回答が役に立ったと思いました。

0 件の追加の回答

並べ替え方法: 最も役に立つ