C ++ / CLI中CMapStringToString的等效类型

时间:2011-12-12 10:21:27

标签: c++ map c++-cli

我需要为C ++函数编写一个.NET托管包装器,定义如下:

void getMap(CMapStringToString*& Map);

此函数存储Map变量中的必要信息。

现在我将函数包装如下,但我不知道从包装函数得到正确的输出:

void GetMap(System::Collections::Specialized::StringDictionary ^% nMap)
{
  CMapStringToString orig_map, *map = &orig_map, *&mapRef = map;
  m_pUnmanagedObject->getMap(mapRef);
  for(POSITION pos = orig_map.GetStartPosition(); pos != NULL; )
  {
    CString key, pa, &paRef = pa;
    orig_map.GetNextAssoc(pos, key, paRef);
    nMap->Add(gcnew System::String((LPCTSTR)key), gcnew System::String((LPCTSTR)pa));
  }
}

包装器肯定有问题,因为当我使用C ++代码时,我得到了正确的输出但是当我使用包装器代码时, nMap 是空的(即在我做的时候在C#中< em> nMap.Count ,它返回0而对于C ++中的相同示例我得到了6)

1 个答案:

答案 0 :(得分:0)

替换

orig_map.GetStartPosition()

orig_map.GetNextAssoc(...

(*mapRef).GetStartPosition()

(*mapRef).GetNextAssoc(...