У меня есть что-то вроде
class A {
public:
class subA {
public:
// some variables
};
std::vector<subA> children;
void foo() {
// modify children
}
};
class B : public A {
public:
class subB : public A::subA {
public:
// some extra variables
}
std::vector<subB> children;
}
B b;
b.foo();
foo () использует только базовые атрибуты subA. Могу ли я в любом случае заставить B.foo () использовать дочерние элементы, составленные из subB, вместо дочерних элементов subA?
Поскольку A не знает о subB, означает ли это, что я должен сделать foo виртуальным и переписать тот же код, поэтому он использует правильный вектор детей (состоит из subB)? Есть ли лучший способ сделать это?