맞습니다. 저는 C++을 처음 접했으므로 여기서도 배우고 있습니다. 만약 내가 잘못된 방향으로 가고 싶다면 나에게 말해줘. 가능한 한 올바른 길을 가르쳐 주라. (튜토리얼에 대한 링크가있는 perhpap).지도 내에서 파생 된 객체를 저장하는 C++
나는 std :: map을 가지고 놀고 있으며 객체 (항목)를 저장하는 데 사용 해왔다. 이것은 잘 작동합니다. 문제는 파생 된 항목을지도에 저장하려고하는 것입니다. 나는 그것을 작동 시키지만 파생 된 객체를 분할하는 것으로 보인다.
항목에는 속성 a, b 및 c가 있습니다. 음식은 여분의 속성 d와 e가있는 항목에서 파생됩니다. 항목의지도에 저장 될 때 d 및 e에 액세스 할 수 없습니다. 컴파일러는 말한다 :
:
"오류 '클래스 항목이'D '라는 이름의 멤버가 없다"는 표준 : 맵 polymorphicaly를 사용 가능 또는 내가 부스트와 같은 다른 라이브러리를 사용해야합니까? 부스트는 다소 복잡한 것처럼 보입니다. 나는 여전히 배우는 동안지도로 그것을 할 수있는 방법이 있기를 바랬습니다. 내가 의미하는 바를 명확하게하기 위해 내가 놀고있는 코드가 있습니다.
Item * item = new Item (a, b, c);
itemmap [vnum] = item;
DerivedItem * deriveditem = new DerivedItem (a, b, c, d, e);
itemmap [vnum] = deriveditem;
이 작동하지만 파생 상품의 개발에 액세스하고 전자 수 없습니다
typedef std::map <int, tItem*> itemMap;
상황이 이런 식으로 추가됩니다 항목의
지도는 이렇게 선언한다. 도움말 사람
이 모든 것이 심각한 메모리 누출 악몽이 될 것입니다. 대신 스마트 포인터를 사용해야합니다. –
지도에있는 항목은 프로그램을 종료 할 때까지 제거되지 않으므로 메모리 누출이 있어서는 안됩니다. – DizzyDuke