함께 객체C++ 저장 기지와 파생 클래스는 내가 두 클래스 되세요
class Door: public Thing {
private:
bool open;
public:
int targetLocation;
Door(int _code, string _name, string _desc, int _loc, int _targetLoc) :
Thing(_code, _name, _desc, _loc, false) {
open = false;
targetLocation = _targetLoc;
}
void Use() {
open = true;
}
void Close() {
open = false;
}
bool isOpen() {
return open;
}
};
는 공개/부가 요소를 잊어을 ...
기본 클래스의 일부 객체와 파생 클래스의 객체 일부를 저장해야합니다. 이 :
vector < Thing*> allThings;
things.push_back(new Thing(THING1, "THING1", "some thing", LOC1, true));
things.push_back(new Door(DOOR1, "DOOR1", "some door", LOC1, LOC2));
그러나이 경우
이 .. 때문에 슬라이스의 연결할 수 없습니다 사용(),() 열기를 ISOPEN() 함수를 당신이 몇 가지 제안이 있습니까이 어떻게 저장하기vector<Thing*>
및
vector<Door*>
의 새 구조를 만들지 않고 개체를 함께 ??
감사
대신 인스턴스의
당신이'것 *'s의를 저장하는 경우,이 슬라이스되지 않습니다 : 그것은 아무 의미가 없기 때문에
Thing
가isOpen()
을 가지고 당신이 할 수없는 경우, 같은 Visitor Pattern 같은 고급 솔루션을 사용하는 것이 (당신은 근심의 계급 데이터를 파괴하지 않는다, 당신은 지금 막 거기에 있다는 것을 모르고있다). 'Door' 객체는 손상되지 않습니다. 파생 된 클래스 함수를 사용하려면 나중에 다시 가져 오는 방법이 필요합니다. – BoBTFish