Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
FanOfGun
6 / 6 / 1
Регистрация: 13.10.2012
Сообщений: 101
#1

Взаимный инклуд или как-то так - C++

20.07.2013, 20:21. Просмотров 333. Ответов 5
Метки нет (Все метки)

Есть два класса, которые используют друг друга. Как добиться работы программы? Если включу хедер первого класса в хедер второго и наоборот получу ошибку, если нет -- тоже. Как выйти из ситуации? Оба класса используют друг друга в полном объеме, т.е. выкинуть часть функционала в другой класс не вариант. Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Взаимный инклуд или как-то так (C++):

Как сделать инклуд папки с файлами h? - C++
Все эти файлы находятся в папке QtWebKit: QWebHistory qwebpage.h .. qwebhistory.h ...

Возвращение функции(или как-то так) - C++
Дано натуральное число N, проверить, простое оно или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым...

как сделать так, чтобы файл открывался, к примеру по тройному или четверному щелчку мыши? - C++
Друзья, есть какие-нибудь соображения? А то по умолчанию в винде файлы открываются по двойному щелчку, а я сделал чтобы открывались по...

Как в данной программе сделать так чтобы все генерируемые числа стояли по возрастанию или по убыванию - C++
как в данной программе сделать ток что бы все генерируемые числа стояли по возрастанию или по убыванию нужен свежий взгляд ...

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается? - C++
При вводе элементов массива, программа прекращает работу или не правильно работает. Например если указать размер массива 10 , то ввод...

Как сделать так, чтобы поток ofstream НЕ открылся, или открылся неправильно? - C++
Эта ситуация нужна мне для тестирования. Итак, файл "file.txt" вручную не удаляется. Не переименовывается. Если поток закрыть, как в...

5
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 20:27 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1.h:
 
#ifndef 1_H
#define 1_H
#include "2.h"
 
class B;
 
class A
{
...
};
 
 
#endif
 
 
 
 
2.h:
 
#ifndef 2_H
#define 2_H
#include "1.h"
 
class A;
 
class B
{
...
};
 
#endif
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,233
20.07.2013, 20:29 #3
Цитата Сообщение от FanOfGun Посмотреть сообщение
Оба класса используют друг друга в полном объеме, т.е. выкинуть часть функционала в другой класс не вариант. Заранее благодарен.
описать класс

например так никакой ошибки( ну кроме логической) и все откомпилится
C++
1
2
3
4
5
6
7
8
9
10
class Class2;
class Class1
{
Class2 cl2;
}
 
class Class2
{
Class1 cl1;
}
в каждом заголовочном файле опиши класс партнер и все сработает
подключать не надо
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
20.07.2013, 20:32 #4
Цитата Сообщение от ValeryS Посмотреть сообщение
например так никакой ошибки( ну кроме логической) и все откомпилится
Если cl2 будет ссылкой или указателем
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,233
20.07.2013, 20:34 #5
Цитата Сообщение от gray_fox Посмотреть сообщение
Если cl2 будет ссылкой или указателем
ну тады нормально
а напрямую не сработает, будут друг под друга память выделять
я специально так написал чтобы не в тупую копировали
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
20.07.2013, 20:35 #6
Два взаимосвязных класса
0
20.07.2013, 20:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 20:35
Привет! Вот еще темы с ответами:

setprecision() не работает, или работает не так как нужно - C++
cout << setw(5) << "X=" << setprecision(2) << X; cout << setw(20) << "X=" << setprecision(0)<< X << endl; cout << setw(5) << "Y=" <<...

Взаимный обмен значений указателей в параметрах функции - C++
Необходимо создать шаблонную функцию void f(int *x, float *y) в которой *х - указатель на массив, состоящий из целых чисел, *у -...

Взаимный include без использования cpp-файлов - C++
Возможно ли связать два класса реализованных в .h-файлах, чтобы не приходилось переносить реализацию в файлы cpp? Эти 2 класса: ...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include <iostream> #include <conio.h> using namespace std; int main(){ float a,c; char b; skip: ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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