У меня есть ploblem о круглых шаблон ссылки. Я хочу создать дерево, используя класс node и class edge, как показано ниже;Циркуляр шаблон ссылка структура
template <typename EdgeT>
class node
{
public:
std::vector<EdgeT> edge_out;
std::vector<EdgeT> edge_in;
};
template <typename NodeT>
class edge
{
public:
NodeT* src;
NodeT* dst;
int weight;
};
template <typename NodeT, typename EdgeT>
class graph
{
public:
std::vector<NodeT> nodes;
};
я обнаружил, что я не могу объявить график класса Ex:
graph< node, edge > g; // <--- this cannot be solved
graph< node< edge <node.....>, edge< node< edge>> > //it makes infinity declaration..
Как я могу пересмотреть структуру классов?
Нужно ли это замаскировать? – Xymostech
«edge» и «node» class должны быть базовые классы. Я планирую их повторно использовать. ex унаследованный край может содержать «поток» «reverse_flow» .... или унаследованный класс «node» может иметь больше данных, таких как флаг, ..etc ... поэтому поэтому я делаю их как шаблоны – MooMoo
это не для меня какой-то смысл ... как узел может удерживать ребро с источником и местом назначения? Разве источник не всегда является самим узлом? Он должен содержать список узлов ... – Mehrdad