假设我们有两个类:
class Parent
{
public:
vector<int> x;
protected:
void Method();
}
和
class Child : public Parent
{
public:
vector<double> x;
}
并且该方法Method()进行操作x并进行一些操作,这对两种类型都兼容int和double:
void Parent::Method()
{
x.push_back(1);
}
然后,如果我将创建一个Child类的实例,初始化vector<double> x,然后Method()从基类调用派生方法,C++ 将尝试对Parent' 成员x而不是Child' 成员进行操作。有什么方法可以使基类方法自动对属于已创建类的成员进行Child操作vector<int> x?
编辑: 正如 McAden 正确指出的那样,这种行为可以使用多态性轻松实现:三个类 - 1 个基类和 2 个派生类。但这是否意味着只有 2 个班级是不可能的?