如何解决"错误C2872:' IDictionary' :模糊符号[VS2012 - C ++ / CLI]

时间:2015-06-19 03:29:00

标签: c++-cli

我需要在我的项目中使用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 );
   } 
  };

1 个答案:

答案 0 :(得分:2)

由于您的应用程序在不同的命名空间中有多个IDictionary接口,因此您必须完全限定该引用。例如:

System::Collections::IDictionary^ d

或者其他IDictionary类型的命名空间是什么。

或者,您可以删除其中一个命名空间的using语句。