我有以下课程:
class A
{
public:
A();
virtual void doSomething() const;
};
class B : public A
{
public:
B();
void doSomething() const;
};
然后我有功能:
void putToList(const A &a)
{
a.doSomething(); // this one depends on what was set as argument A or B class (putToList(A()) or putToList(B()))
std::list<A> As;
As.push_back(a);
As.back().doSomething(); //this always calls doSomething from A
}
我的问题是,为什么从列表中取出对象是 A 以及如果我传递给函数的对象属于 B 类,如何防止它更改类型并将其变为 B。