Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173

Классы и заголовочные файлы

13.01.2013, 20:35. Показов 1401. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Было у меня два класса и всё в одном cpp-файле реализовано.
Потом я решил что неплохо было их в разные файлы распихать и еще заголочных файлов добавить (хз зачем мне это понадобилось, раньше таким не занимался). Тут и начались проблемы..
Проблема в том, что в описании одного класса содержится указатель на другой класс и обратно.

Выглядит всё это примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
main.cpp
#include "func1.h"
#include "func2.h"
 
func1.h
#ifndef __FUNC1_H_
#define __FUNC1_H_
#include <stdio.h>
class Class1{
    Class2 *p;
};
#endif /* __FUNC1_H_ */
 
func2.h
#ifndef __FUNC2_H_
#define __FUNC2_H_
#include <stdio.h>
class Class2 {
    Class1 *p;
};
#endif /* __FUNC2_H_ */
Code
1
2
3
4
5
6
7
g++ main.cpp func1.cpp func2.cpp 
In file included from main.cpp:5:0:
func1.h:9:2: error: ‘Class2’ does not name a type
In file included from func1.cpp:1:0:
func1.h:9:2: error: ‘Class2’ does not name a type
In file included from func2.cpp:1:0:
func1.h:9:2: error: ‘Class2’ does not name a type
Если запихать такое в одни файл, то (как ни странно) работало, а счас не хочет...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2013, 20:35
Ответы с готовыми решениями:

Классы.Заголовочные файлы
Здравствуйте.Помогите найти ошибку.В программе.Вот код. /* main.cpp */ #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

VS2012 классы, заголовочные файлы, ООП
Написал хорошую программу, но всё в одном файле main.cpp. У меня есть около 12 классов, много наследования, std::vector-ов, и т.д. ...

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

3
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.01.2013, 20:37
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//func1.h
#ifndef __FUNC1_H_
#define __FUNC1_H_
 
#include <stdio.h>
 
class Class2;
 
class Class1 {
    Class2 *p;
};
 
#endif /* __FUNC1_H_ */
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//func2.h
#ifndef __FUNC2_H_
#define __FUNC2_H_
 
#include <stdio.h>
 
class Class1;
 
class Class2 {
    Class1 *p;
};
 
#endif /* __FUNC2_H_ */
0
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
13.01.2013, 21:06  [ТС]
ага, работает.
а в чем тут фишка, что данная конструкция означает?
когда в одном файле всё было, поначалу тоже писал class Class1; class Class2; перед определениями классов, но поскольку смысл этого не понимал, то как-то удалось избавиться от этих лишних строк (не помню как).
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
13.01.2013, 22:27
Цитата Сообщение от spyphy Посмотреть сообщение
а в чем тут фишка, что данная конструкция означает?
Опережающее объявление. Указывает компилятору, что такой класс есть, но он где-то далее объявлен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2013, 22:27
Помогаю со студенческими работами здесь

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы?
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Заголовочные файлы
1. Создаю файл foo.h, внутри которого пишу следующий код: #ifndef FOO_H_INCLUDED #define FOO_H_INCLUDED void foo(int i) {...

Заголовочные файлы (.h)
Доброго времени суток господа! Озадачился вопросом по поводу заголовочных файлов. Но подробного, или понятного мне ответа так и не нашёл....

Заголовочные файлы
Где в Visual studio находится папка с заголовочными файлами, такие как iostream, cmath. Хочу закинуть один файл со всеми необходимыми для...

заголовочные файлы
За мое небольшое время знакомство с программированием в с++ накопилось немного вопросов с работой заголовочных файлов: 1 Почему в имени...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru