0

我正在开发一个使用 C# 和 C++ 的游戏。模型类是用 C# 编写的,层级结构存储在 XML 文件中。当我想用 C++ 阅读它并想构建项目时,我遇到了这个奇怪的错误,而且我在哪里找不到一些错误。

Error   1   error C3699: '*' : cannot use this indirection on type 'Cadet::XMLReader::Models::Obstacle' C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0 527 1   Cadet.Game

这些错误在xmemory0list文件中?它们是什么?它只发生在障碍类中,其余的都很好。

这是代码的一部分

    void SetupObstacles(std::list<Cadet::Game::Entities::Obstacle>  &obstacles)
    {
     int size = CurrentLevel->Obstacles->Length;
     Cadet::XMLReader::Models::Obstacle^ currentObstacle;
  }
4

2 回答 2

2

它看起来像是Cadet::Game::Entities::Obstacle一个托管类(因为您已将 声明currentObstacle为引用^)。如果是这种情况,您不能直接将托管对象存储在 STL 容器中,例如std::list<>.

在没有更多上下文的情况下,很难说下一步该做什么,但一种可能的解决方法是改变你的SetupObstacles方法:

void SetupObstacles(System::Collections::Generic::List<Cadet::Game::Entities::Obstacle>^ obstacles)
    { ... }
于 2013-03-09T20:01:05.203 回答
0

你有指向Obstacle某个地方的指针吗?

此错误的帮助表明某些类型(例如普通属性)不能有引用类型——你不能有指向它的指针。尝试^改用。

于 2013-03-09T18:14:04.487 回答