2016-10-21 6 views
-1

이 질문은 아마도 C++로 시작했기 때문에 아마도 멍청한 질문 일 것입니다. 그러나 내가 뭘 잘못하고 있는지 알 수는 없습니다. 제가하고있는 프로젝트는 학교 과제입니다. 이 할당에서는 원시 포인터 만 사용할 수 있으므로 원시 포인터의 작동 방식을 확인합니다.원시 포인터가있는 벡터에서 객체의 속성에 객체를 할당하는 방법은 무엇입니까?

이제 원시 포인터로 인해 문제가 발생했습니다. 그 포인터는 나에게 오류를 주었다. ''Room '에서'Room * '까지 적절한 변환 기능이 없습니다.

내가이 오류의 원인을 설명하기 위해 필자가 작성한 코드의 철저한 버전을 제공하려고합니다.

class Level 
{ 
private: 
    Room _startRoom; 
    vector<vector<Room>> _rooms; 
}; 

class Room 
{ 
public: 
    Room *North; 
    Room *East; 
    Room *South; 
    Room *West; 
}; 

저는 Level이라는 클래스가 있습니다.이 클래스는 서로 다른 룸을 깔끔하게 인쇄 할 수 있도록 벡터에 벡터가있는 클래스입니다. 모든 방이 연결되는 것은 아니므로 다른 방과의 연결에 대해 방 방향을 지정했습니다. 그러나 _rooms [y] [x] .South를 _rooms [y + 1] [x]로 설정하여 방 사이의 연결을 생성하려고합니다. 'Room'에서 'Room *'까지 적절한 변환 기능이 없습니다. '라는 오류가 나타납니다.

누군가이 오류 메시지가 나타나는 이유를 분명히 알 수 있습니까? 모든 도움을 주실 수 있습니다.

답변

0

_rooms[y + 1][x]Room 인스턴스이며 방에 대한 포인터가 아닙니다. 관련이없는 메모에서

_rooms[y][x].South = &_rooms[y+1][x]; 

: 그것의 포인터를 얻으려면 당신은 주소의 운영자 &를 사용할 필요가 당신은 당신의 Level 객체의 벡터를 채울 기억 하는가?

+0

네, 저는 초기화했습니다.하지만 가능한 한 te 코드를 유지하려고 노력했기 때문에 문제에 중점을 두었습니다. 그러므로 나는 그 부분을 떠났다 : p. 그리고 변수가 작동하기 전에 앰퍼샌드를 배치 해줘서 고맙습니다. 하지만 왜 포인터를 참조 할 수 있습니까? – user3473161