我正在开发一款使用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
这些错误存在于xmemory0
和list
个文件中?它们是什么?它只发生在Obstacle类中,其余的都很好。
这是代码的一部分
void SetupObstacles(std::list<Cadet::Game::Entities::Obstacle> &obstacles)
{
int size = CurrentLevel->Obstacles->Length;
Cadet::XMLReader::Models::Obstacle^ currentObstacle;
}
答案 0 :(得分:2)
看起来Cadet::Game::Entities::Obstacle
是托管类(因为您已将currentObstacle
声明为^
的引用)。如果是这种情况,则无法直接将托管对象存储在STL容器中,如std::list<>
。
如果没有更多上下文,很难说下一步该做什么,但一种可能的解决方法是更改SetupObstacles
方法:
void SetupObstacles(System::Collections::Generic::List<Cadet::Game::Entities::Obstacle>^ obstacles)
{ ... }
答案 1 :(得分:0)
你有指向某个Obstacle
的指针吗?
help on this error表明某些类型(例如普通属性)不能具有引用类型 - 您不能指向它。请尝试使用^
。