Я использую C ++ под Ubuntu 11.10 и последней версией NetBeans.Допустим, у меня есть следующий код:
class Node {}
class DerivedNode : public Node {}
class Graph {
vector<Node*> nodes;
}
class DerivedGraph : public Graph { }
В данный момент я храню DerivedNodes в классе DerivedGraph, например, так:
nodes.push_back(new DerivedNode());
Когда мне нужно использовать определенные методыкоторые применяются только к DerivedNodes и DerivedGraphs. Сначала я вынужден использовать dynamic_cast на моих указателях Node.
Я хотел бы иметь возможность использовать в DerivedGraph специальные методы, которые применяются только к DerivedNodes и избегать необходимости указателей приведения,Я не против перепроектировать мои классы, если конечный результат лучше, чем у меня.
Я уверен, что должен быть чистый и простой метод для достижения того же, что я пытаюсь сделать.Может быть, что-то со специализированными шаблонами?Любые мысли по этому вопросу будет принята с благодарностью.Я также предоставлю любую дополнительную информацию, требуемую в случае, если я не был слишком ясен.
РЕДАКТИРОВАТЬ: у меня нет двух копий.Я хотел сделать акцент на том, как это выглядит.Я прошу прощения за презентацию.То, что я хочу получить:
class DerivedGraph: public Graph {
vector<DerivedNode*> nodes;
}