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

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

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

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

27.08.2016, 18:51. Просмотров 173. Ответов 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++):

Раздельная компиляция в Code::Blocks - как правильно разместить код в файлах? - C++
В проекте code blocks есть функция main, несколько функций, которые подключаются как статические библиотеки, и структура (struct), которая...

Как скомпилировать два класса, которые используют методы друг друга - C++
Доброго времени суток. имеется 3 файлика: asteroid.cpp starsystem.cpp main.cpp в main.cpp файлики инкудятся в следующем...

Раздельная компиляция и шаблоны: как правильно использовать? - C++
Столкнулся с очень неприятной ситуацией, когда один и тот же код не работает, если класс разделить по файлам. #include &lt;iostream&gt; ...

Раздельная компиляция. Преобразовать код в многофайловое приложение - C++
нужна помощь в преобразовании кода программы для разделенной трансляции (заголовочный код, код реализации класса и сам модифицированный код...

Раздельная компиляция: как правильно реализовать многофайловый проект? (no matching function for call to...) - C++
Есть основной файл main.cpp #include &quot;header.hpp&quot; int hp_summ_a=2000, hp_summ_b=2000; int const N=20; int main(){ ...

Два класса, вызывающие друг друга - C++
У меня есть файл class1.h и файл class2.h внутри класса 1 вызывается класс 2 и наоборот. Но, класс 1 располагается выше и не видит...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
777 / 710 / 131
Регистрация: 27.07.2012
Сообщений: 2,041
Завершенные тесты: 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-
Любитель чаепитий
2692 / 1225 / 297
Регистрация: 24.08.2014
Сообщений: 4,410
Записей в блоге: 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
777 / 710 / 131
Регистрация: 27.07.2012
Сообщений: 2,041
Завершенные тесты: 3
27.08.2016, 19:17 #5
Цитата Сообщение от sm4ll_3gg Посмотреть сообщение
Только можете сказать как этот приём называется
class A; - предварительное обьявление. Позволяет уменьшить зависимости между файлами. У Герба Саттера в "сложных задачах" есть глава как раз на эту тему.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2016, 19:17
Привет! Вот еще темы с ответами:

Два класса, требующих друг друга - C++
Существует два класса, обзовём их MyClassA и MyClassB. Возникла такая вот ситуация: у класса MyClassA есть поле типа vector&lt;MyClassB*&gt;...

Если кнопка управления и микроконтроллер друг от друга на 15 м, как быть, наводки будут? - ARM
Могут быть ложные срабатывания из за наводок в проводах? Или емкость проводов может как то помешать нормальной работе МК? Как быть тогда?

Как связать два combobox так, что бы они зависили друг от друга, через базу данных? - C#
Доброго времени суток. Я начинающий программист. Решил написать программу, для удобства работы. Но столкнулся с непреодолимой для меня...

Как сделать так чтобы при спавне предметов они отталкивались друг от друга если они спавнятся близко С# - Unity, Unity3D
Есть загвоздка, не как не могу понять как это релизовать, приведу пример : происходит спавн кубов рандомно, и некоторые могу быть дуг на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.08.2016, 19:17
Ответ Создать тему
Опции темы

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