想象一下,我有一个类“BaseA”,其中包含项目“ItemA”的集合。现在我想扩展“BaseA”以添加额外的功能,所以我从“BaseA”派生了“DerivedA”。“DerivedA”的一个特点是它必须处理更复杂的“DerivedITemA”项目而不是“ItemA”项目。
class BaseA {
protected:
vector<ItemA> x;
void m1(int i) { x.m1(i); }
};
class ItemA {
protected:
void m1(int i) { ... }
};
class DerivedItemA : public ItemA {
void m2(int i) { ... }
};
现在我想处理这样的事情:
class DerivedA : public BaseA {
vector<DerivedItemA> x;
void m2(int i) { x[i].m2(); }
};
即让我的派生类处理派生项目。上述 x 的定义是不正确的,因为它与 BaseA 中的定义相冲突。但我的想法是我希望能够重用 BaseA 中处理 x 的所有方法,只要它们处理 ItemA 元素并且在 DerivedA 中具有扩展方法来处理 DerivedItemA 类型数据的额外复杂性
有什么建议吗?我目前的想法是为 x 定义一个新的数据类型(例如 VectorOfItemA)并从中派生 VectorOfDerivedItemA。我想知道是否有更简单/更好的解决方案。
谢谢