我试图将对象添加到“内容”向量中,并在所有对象上使用show()。
但是,属于“基础”的子级(A,B)的对象的行为类似于“基础”类型的对象,
我的意图不是什么。看起来,我尝试使用虚函数,但是它不起作用。
我希望代码能说明一切。
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
}
提前致谢。
最佳答案
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(); // <<
}
关于c++ - 对象 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2002472/