"콘텐츠"벡터에 객체를 추가하고 모두에 대해 show()를 사용하려고했습니다. 그러나 "Base"의 자식 (A, B) 인 객체는 "Base"유형처럼 동작합니다. 내 의도가 아닌 것은 입니다. 보이는 것처럼 가상 함수를 사용하려고했지만 작동하지 않습니다.객체 벡터
코드가 자체적으로 표현되기를 바랍니다.
class Base {
public:
virtual void show() { cout << "Base "; }
};
class A : public Base {
public:
virtual void show() { cout << "A "; }
};
class B : public Base {
public:
virtual void show() { cout << "B"; }
};
vector<Base> content;
void add(Base &o) {
content.push_back(o);
}
A test1;
B test2;
add(test1);
add(test2);
for (size_t i = 0; i < content.size(); i++) {
collection[i].show(); // output is: Base Base instead of A B
}
미리 감사드립니다.
답변 코드는 대개 많은 정보를 묘사하지 못합니다. 당신은 그것을 설명 할 필요가 있습니다 : 그것이 무엇을 해결하는지, 어떻게 해결하는지 등. 또한, 당신은'delete'를 언급하지 않고 있습니다. 편집 : 수락; 오, 아이러니. – GManNickG
GMan : 아니요'new'도 아니고 'delete'도 아니요 – swegi
충분하지만, 어쨌든 실제 코드에서 어떻게 사용되는지는 아닙니다. 'new'와'delete'를 사용할 것입니다. – GManNickG