Есть множество классов, объекты которых должны общаться друг с другом. Первая мысль: поля тех объектов что должны общаться, делать static, что не есть хорошо. Мысль вторая: каждый объект имеет указатель на все остальные объекты и при помощи методов взаимодествуют друг с другом. Каким еще образом это можно реализовать , и в какую сторону копать и что почитать ?
По формулировке вопроса - можно посмотреть паттерн медиатор. Каждый объект будет напрямую работать только с объектом-посредником, у которого уже есть ссылки на все объекты и который организует общение.
Если смотреть на решение вообще - "куча классов, которым всем почему-то друг про друга нужно знать" - звучит как не очень удачная архитектура, имхо.
Возникает проблема. Объект посредник должен хранить указатели на объекты. Для этого посреднику заранее надо объяснить типы хранимых объектов. Получается в файл с классом я включаю заголовки тех классов с которыми он будет работать, и одновременно надо в объект посредника записать сами указатели. Первое действие происходит в классе посредника. Второе действие происходит непосредственно в самих классах. А это перекрестное включение файлов.
Он может работать с интерфейсом, от которого они все отнаследованы и включать только файл интерфейса. Сам интерфейс может задавать сигнатуры методов через предварительное объявление класса-посредника, к примеру.
Но для этого необходимо иметь указатели на оба объекта. Получается если надо связать объекты A и B, то при создании объекта B в его конструктор надо передать указатель на A, и в реализации B уже связывать, если я правильно понимаю. Но я бы хотел избежать передачи указателей.
yarushin_a, в qt все построено на указателях, поэтому странно, что вы пытаетесь от них уйти. Если боитесь потенциальной утечки памяти, то просто используйте умные указатели.
Что бы связать сигнал и слот, нужно просто иметь указатели на эти объекты. Объединять их можно и так сказать снаружи, не передавая один в другой. К тому же это можно делать в любой момент, а не только в момент создания.