Как мне моделировать накопление данных в дереве наследования в C ++?

Я не уверен, правильно ли сформулирован мой вопрос, но я пытаюсь понять, что это лучший способ моделировать данные, которые «накапливаются» в агрегированной переменной-члене в дереве классов в C ++. То есть каждый производный класс добавляет некоторые данные для члена, наследуя некоторые начальные данные от его родителя.

Например, скажем, у меня есть строка «description», в которой есть одно или несколько предложений, общих для всех классов в дереве, ноль или более предложений, общих для различных ветвей дерева, и ноль или более предложений, которые являются уникальными к конкретным листовым узлам.

Каков наилучший способ смоделировать это в C ++?

Наиболее очевидный способ выглядит примерно так:

#include <iostream>
#include <string>

class A {
public:
A() {
appendDesc("base description\n");
}

void printDesc (void) {
std::cout << description;
}

protected:
void appendDesc (std::string description) {
this->description.append(description);
}

private:
std::string description;
};

class B : public A {
public:
B() {
appendDesc("extra description\n");
}
};

int main(int argc, const char *argv[]) {
B b;
b.printDesc(); // prints "accumulated" description
return 0;
}

Я использую здесь строки в качестве примера, но принцип применим ко всему, что нужно «накапливать» на агрегированном члене через дерево классов.

Итак, это лучший способ иметь append() метод в базовом классе и заставить производные классы вызывать его в своем конструкторе, или есть лучший способ? Есть ли недостатки у подхода, описанного выше?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]