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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sm4ll_3gg
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 21
#1

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

27.08.2016, 18:51. Просмотров 127. Ответов 4
Метки нет (Все метки)

Доброго времени суток.
У меня есть какой-нибудь 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++ Два класса, требующих друг друга
C++ Расставить на доске N ферзей так, чтобы они не били друг друга
C++ Раздельная компиляция. Преобразовать код в многофайловое приложение
C++ Определить, как расположены треугольники относительно друг друга
C++ Как позволить функциями видеть друг друга?
C++ Разместить флажки на прямой как можно дальше друг от друга
Как перемножить элементы в двумерном массиве друг на друга? C++
C++ Раздельная компиляция и шаблоны: как правильно использовать?
Раздельная компиляция: как правильно реализовать многофайловый проект? (no matching function for call to...) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
757 / 690 / 124
Регистрация: 27.07.2012
Сообщений: 1,975
Завершенные тесты: 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++
2025 / 825 / 218
Регистрация: 24.08.2014
Сообщений: 3,178
Записей в блоге: 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
757 / 690 / 124
Регистрация: 27.07.2012
Сообщений: 1,975
Завершенные тесты: 3
27.08.2016, 19:17     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? #5
Цитата Сообщение от sm4ll_3gg Посмотреть сообщение
Только можете сказать как этот приём называется
class A; - предварительное обьявление. Позволяет уменьшить зависимости между файлами. У Герба Саттера в "сложных задачах" есть глава как раз на эту тему.
Yandex
Объявления
27.08.2016, 19:17     Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга?
Ответ Создать тему
Опции темы

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