2013-03-09 4 views
0

C# 및 C++를 사용하는 게임을하고 있습니다. 모델의 클래스는 C#으로 작성되고 수준 구조는 XML 파일에 저장됩니다. 내가 C++로 읽고 프로젝트를 만들고 싶을 때 나는이 이상한 오류가 있으며 어떤 버그를 찾을 수있는 곳이 없다. xmemory0list 파일에관리되는 코드 오류 및 관리되지 않는 코드 오류 C3699

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 

오류의 이러한 종류입니까? 그들은 무엇입니까? 그리고 그것은 Obstacle 클래스에서만 발생합니다. 나머지는 괜찮습니다. 여기

이 코드

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

이 코드를 표시합니다 .. 이러한 오류가 xmemory0에 보여주기 때문에 일부 –

+0

를 프로젝트의 일부 파일에없는 파일을 나열하십시오 –

+0

xmemory0에 주석을 달아 빌드를 시도하여 문제의 원인을 알 수 있습니다. – nsconnector

답변

0

의 부분은 당신이 어딘가에 Obstacle에 대한 포인터가 있나요입니까?

help on this error은 일부 유형 (예 : 사소한 속성)은 참조 유형을 가질 수 없다는 것을 제안합니다. 포인터를 사용할 수 없습니다. 대신 ^을 사용해보세요.

2

으로 currentObstacle을 참조로 선언 했으므로 Cadet::Game::Entities::Obstacle은 관리되는 클래스입니다. 이 경우 std::list<>과 같이 관리 대상 객체를 STL 컨테이너에 직접 저장할 수 없습니다.

그것은 더 상황 O/w 다음에 무엇을 말하기 어렵지만, 하나의 가능한 수정은 SetupObstacles 방법을 변경하는 것입니다 :

void SetupObstacles(System::Collections::Generic::List<Cadet::Game::Entities::Obstacle>^ obstacles) 
    { ... } 
관련 문제