我有一个 A 类,处理特定类型的对象(那里的 A 实例)。我想要一个 B 类,它大部分(即并非所有方法都相同)具有相同的行为,但它正在处理不同的对象类(那里的 B)。
这是我尝试过的:
#include <iostream>
#include <vector>
class A
{
public:
virtual void perform() { data.push_back(A()); };
std::vector<A> data;
};
class B : protected A
{
public:
B() : A() {}
void test() { perform(); }
std::vector<B> data;
};
int main()
{
B b;
b.test();
std::cout << b.data.size() << std::endl;
}
// output: 0
// I expected: 1
我期望std::vector<B>
在插入期间使用而不是std::vector<A>
,因为 B 是 B 的子类。
我错过了什么?有没有一种方法可以确保 A 类中定义的每个方法在 B 类中都按预期工作?
谢谢!