我需要在我的项目中使用IDictionary。当我添加此编译器不喜欢它并报告明显的错误 “错误C2872:' IDictionary' :暧昧的象征“。但是,如果我创建一个新的示例项目,编译器永远不会报告任何错误
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 );
}
};
答案 0 :(得分:2)
由于您的应用程序在不同的命名空间中有多个IDictionary
接口,因此您必须完全限定该引用。例如:
System::Collections::IDictionary^ d
或者其他IDictionary
类型的命名空间是什么。
或者,您可以删除其中一个命名空间的using
语句。