Форум программистов, компьютерный форум CyberForum.ru

Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? - C++

Восстановить пароль Регистрация
 
sm4ll_3gg
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 21
27.08.2016, 18:51     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? #1
Доброго времени суток.
У меня есть какой-нибудь x.h:
C++
1
2
3
4
5
#include "y.h"
class A
{
vector<B*> v;
}
и y.h:
C++
1
2
3
4
5
6
7
#include "x.h"
 
class B
{
public:
void foo(A);
}
Но код не компилится так как два файла подключают друг друга, выдаётся ошибка компиляции в файле y,h "A was not declarated in this scope"
Обязательно нужно в первом классе использовать экземпляр второго, а во втором экземпляр первого.
Как обойти данную ошибку?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2016, 18:51     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга?
Посмотрите здесь:

Как скомпилировать два класса, которые используют методы друг друга C++
Два класса, вызывающие друг друга C++
C++ Два класса, требующих друг друга
C++ Расставить на доске N ферзей так, чтобы они не били друг друга
C++ Раздельная компиляция. Преобразовать код в многофайловое приложение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
27.08.2016, 18:53     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Измени y.h
C++
1
2
3
4
5
6
7
class A;
 
class B
{
public:
void foo(A);
}
GbaLog-
Не Эксперт C++
1473 / 618 / 174
Регистрация: 24.08.2014
Сообщений: 2,522
Записей в блоге: 1
Завершенные тесты: 2
27.08.2016, 18:53     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? #3
sm4ll_3gg, Думаю эта тема Вам поможет.
sm4ll_3gg
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 21
27.08.2016, 19:08  [ТС]     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? #4
Спасибо большое. Заработало.
Только можете сказать как этот приём называется, а лучше где про это почитать
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
27.08.2016, 19:17     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? #5
Цитата Сообщение от sm4ll_3gg Посмотреть сообщение
Только можете сказать как этот приём называется
class A; - предварительное обьявление. Позволяет уменьшить зависимости между файлами. У Герба Саттера в "сложных задачах" есть глава как раз на эту тему.
Yandex
Объявления
27.08.2016, 19:17     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга?
Ответ Создать тему
Опции темы

Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru