1
我需要在我的項目中使用IDictionary當我添加此編譯器不喜歡它,並報告一個明顯的錯誤 」錯誤C2872 :「IDictionary的」:不明確的符號」但是,如果我創建一個新的樣本項目的編譯器永遠不會報告任何錯誤如何解決「錯誤C2872:'IDictionary':模棱兩可的符號[VS2012 - C++/CLI]
Below is the code snippet
Temp.h
#pragma once
#using "System.dll"
using namespace::System;
using namespace::System::Collections;
using namespace::System::Collections::Specialized;
public ref class MyCollection : public NameObjectCollectionBase {
private:
DictionaryEntry^ _de;
// Gets a key-and-value pair (DictionaryEntry) using an index.
public:
property DictionaryEntry^ default[ int ] {
DictionaryEntry^ get(int index) {
_de->Key = this->BaseGetKey(index);
_de->Value = this->BaseGet(index);
return(_de);
}
}
// Adds elements from an IDictionary into the new collection.
MyCollection(IDictionary^ d) {
_de = gcnew DictionaryEntry();
for each (DictionaryEntry^ de in d) {
this->BaseAdd((String^) de->Key, de->Value);
}
}
// Removes an entry with the specified key from the collection.
void Remove(String^ key) {
this->BaseRemove(key);
}
// Removes an entry in the specified index from the collection.
void Remove(int index) {
this->BaseRemoveAt(index);
}
};
將'using namespace'指令放在.h文件中是很危險的,特別是當您使用這樣一個過時的.NET 1.x名稱空間時。您將在另一個使用IDictionary的通用版本的源文件中包含該文件,並且編譯器不能再計算出您想要的文件。只是不要那樣做。 –