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

これらの種類のエラーはファイルにxmemory0ありlistますか? 彼らが何でありますか?障害物クラスでのみ発生し、残りは問題ありません。

これはコードの一部です

    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<>

コンテキストがなければ次に何をすべきかを言うのは難しいですが、考えられる修正の 1 つは、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 に答える