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

Объявлние классов в разных заголовочных файлах - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
vitek26
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 4
15.01.2011, 18:42     Объявлние классов в разных заголовочных файлах #1
Приветствую всех участников форума.
Есть 2 класса А и В. Каждый из содержит указатель на другой класс. Как сделать объявление классов в разных заголовочных файлах? Сейчас использую один заголовочный файл примерно такого вида:
C++
1
2
3
4
5
6
7
8
9
10
11
//module.h
class B;
class A
{
    B* pointer;
};
 
class B
{
    A* pointer;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2011, 18:42     Объявлние классов в разных заголовочных файлах
Посмотрите здесь:

C++ массивы в заголовочных файлах
Перечислимые типы в разных файлах проекта C++
C++ О стандартных заголовочных файлах
fstream в файлах классов C++
C++ Статические свойства структур в заголовочных файлах
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.01.2011, 18:47     Объявлние классов в разных заголовочных файлах #2
достаточно подключить хедер с вторым классом
vitek26
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 4
15.01.2011, 18:55  [ТС]     Объявлние классов в разных заголовочных файлах #3
Я пытался сделать два заголовочных файла вот так

C++
1
2
3
4
5
6
7
8
//class A
//file A.h
#include "B.h"
 
class A
{
        B* pointer;
};
C++
1
2
3
4
5
6
7
8
//class B
//file B.h
#include "A.h"
 
class B
{
        A* pointer;
};
Но на этапе компиляции ошибки. Файлы ссылаются друг на друга и в итоге ничего хорошего... Я хочу узнать, есть способы обойти это, кроме как включение классов в один файл?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.01.2011, 19:16     Объявлние классов в разных заголовочных файлах #4
сделайте так как в первом своем посте
C++
1
2
3
4
5
6
7
//А.h
#include "В.h"
class B;
class A
{
        B* pointer;
};
C++
1
2
3
4
5
6
7
//В.h
#include "A.h"
class А;
class B
{
        A* pointer;
};
Добавлено через 1 минуту
и про стражи включения не забудьте
vitek26
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 4
13.02.2011, 20:42  [ТС]     Объявлние классов в разных заголовочных файлах #5
Этот совет неверный. Множественное объявление классов.
Если у кого-нибудь возникнет подобная проблема, я решил её следующим образом:
Создал ещё один заголовочный файл, в котором объявил оба класса.
C++
1
2
3
//declare.h
class A;
class B;
И этот файл включил в A.h и B.h
Yandex
Объявления
13.02.2011, 20:42     Объявлние классов в разных заголовочных файлах
Ответ Создать тему
Опции темы

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