У меня есть 2 класса, написанных в двух разных файлах: router.h - router.cpp и topology.h - topology.cpp.Агрегация не работает при написании классов в разных файлах
Я покажу содержимое файлов .h, потому что .cpp содержат только реализации.
router.h:
#ifndef _ROUTER_H_
#define _ROUTER_H_
#include <map>
#include "topology.h"
using namespace std;
class Router {
public:
int id;
map<Router, int> linkers;
Topology topology;
Router();
Router(int id);
void addLink(Router router, int cost);
void delLink(Router router);
};
#endif
topology.h:
#ifndef _TOPOLOGY_H_
#define _TOPOLOGY_H_
#include "router.h"
class Topology {
public:
map<Router, int> graph;
Topology();
void addNode(Router router, int cost);
void delNode(Router router);
};
#endif
Мой вопрос, почему при компиляции у меня есть ошибка, которая вызвана непризнанных классов маршрутизатора и топологии, даже если Я включил заголовки, и я добавил ifndefs, чтобы не включать файлы более одного? Я тоже посмотрел в интернете, на стек и ничего не нашел об этой проблеме.
Нет необходимости использовать замену члена «Топология». Круговую зависимость можно зафиксировать простым переадресацией 'Router' в' topology.h' вместо этого. – bames53