std:make_shared と std::shared_ptrの以前のスタックの質問を見て、これを uni プロジェクトに実装しようとしました。これは以前の「質問」でした:
どんなシチュエーションも思い浮かばない
std::shared_ptr<Object> obj(new Object("foo", 1));
することが好ましいだろう
auto obj = std::make_shared<Object>("foo", 1);
したがって、私はこのコードを取りました:
std::shared_ptr<Triangle> pT1(new Triangle(pCanvas, 30, 30, 30, 60, 60, 30, 255, 0, 0));
そして、このコードに変更しました:
auto pT1 = std::make_shared<Triangle>(pCanvas, 30, 30, 30, 60, 60, 30, 255, 0, 0);
ただし、std::make_shared には赤の下線が引かれています。マウスオーバーすると、「エラー: オーバーロードされた関数 "std::make_shared" のインスタンスが引数リストと一致しません」というエラーが表示されます。
私のコードはコードの 1 行目で正しくコンパイルおよび実行されますが、2 行目を使用するとエラーが発生します。
これらのエラーは次のとおりです。
`1>------ ビルド開始: プロジェクト: SIT153Canvas、構成: Win32 のデバッグ ------ 1> main.cpp
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): エラー C2780: 'std::shared_ptr<_Ty> std::make_shared(_V0_t &&,_V1_t &&,_V2_t && ,_V3_t &&,_V4_t &&)' : 5 つの引数が必要です - 10 個が提供されます
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 'std::make_shared' の宣言を参照してください
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): エラー C2780: 'std::shared_ptr<_Ty> std::make_shared(_V0_t &&,_V1_t &&,_V2_t && ,_V3_t &&)' : 4 つの引数が必要です - 10 個が提供されます
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 'std::make_shared' の宣言を参照してください
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): エラー C2780: 'std::shared_ptr<_Ty> std::make_shared(_V0_t &&,_V1_t &&,_V2_t && )' : 3 つの引数が必要です - 10 個が提供されます
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 'std::make_shared' の宣言を参照してください
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): エラー C2780: 'std::shared_ptr<_Ty> std::make_shared(_V0_t &&,_V1_t &&)' : 2 つの引数が必要です - 10 個が提供されます
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 'std::make_shared' の宣言を参照してください
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): エラー C2780: 'std::shared_ptr<_Ty> std::make_shared(_V0_t &&)' : 1 つの引数が必要です- 10個提供
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 'std::make_shared' の宣言を参照してください
1>c:\users\steve\documents\visual studio 2012\projects\sit153canvas\main.cpp(54): エラー C2780: 'std::shared_ptr<_Ty> std::make_shared(void)': 0 引数が必要です - 10個提供
1> c:\program files (x86)\microsoft visual studio 11.0\vc\include\memory(972) : 'std::make_shared' の宣言を参照してください
エラーによると、std::make_shared は最大 5 つの引数しか期待していないようです。残念ながら、私が検索した他の Web サイトでは、この問題を明らかにしていません。どんな助けでも大歓迎です。