2012-11-26 4 views
9

私は最近VS2012をインストールしました。 VS2010の下で細かくコンパイルするC++プロジェクト(.Net 4.0)は、VS2012のHashSet<T>を認識しません。エラーでハッシュセット<T>は、VS2012のどこに行きましたか?

System::Collections::Generic::HashSet<String^>^ _reasons; 

しかし、それだけの結果:

error C2039: 'HashSet' : is not a member of 'System::Collections::Generic 

ドキュメントは、それはSystem.Collections.Genericにだと言う私も次のように宣言して、明示的であることを試みました。 C++コンパイラはそうは思わない。

どこに行きましたか?

+2

* C++プロジェクト(.Net 4.0)*幸いです。 ** normal ** C++には、 'unordered_set'があります。 –

+1

これはC++ - CLI用ですか? –

+4

アセンブリ 'System.Core'が参照されていますか? System :: Collections :: Generic名前空間はいくつかのアセンブリに存在しますが、そのうちの1つを参照するとエラーメッセージが表示されますが、HashSetを含むものは表示されません。 –

答えて

14

ハッシュセット<は、.NETに遅れて追加されました。これは.NET 3.5で使用可能になりました。ネームスペースは古く、mscorlib.dllにはSystem :: Collections :: Genericのクラス(.NET 2.0以降、クラス<>、Queue <>など)が含まれていました。 HashSet <>はの新しい .NET 3.5、System.Core.dllのアセンブリに追加されましたが、2.0アセンブリで調整したくありませんでした。

したがって、エラーメッセージを回避するには、System.Coreへの参照を追加する必要があります。

このようなエラーが発生した場合は、必ずMSDNのドキュメントを参照して、アセンブリの参照が必要であることを示します。

+0

ありがとうHans。コンパイルしていた.Netフレームワークを変更していないので、新しい参照を追加する必要があるということは私には起こりませんでした。今私は知っている。 –

+0

さて、あなたは実際にやった。 System.Coreを持つ唯一のバージョンである2.0から3.5にターゲットを変更しました。 C++ IDEは、C#やVB.NET IDEのように洗練されたものではありません。かなり典型的なC++ツーリングですが、あなたが何をしているのかをあなたが知っていると仮定します。 –

+1

偉大な答えが、私のような他の新しいC + +人を助けるために、これは私の参照がそれを修正するために見えたものです:#using Mizmor

関連する問題