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

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

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

Author24 — интернет-сервис помощи студентам
Было у меня два класса и всё в одном 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_ */
Код
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2013, 20:35
Ответы с готовыми решениями:

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

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

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

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

3
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.01.2013, 20:37 2
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  [ТС] 3
ага, работает.
а в чем тут фишка, что данная конструкция означает?
когда в одном файле всё было, поначалу тоже писал class Class1; class Class2; перед определениями классов, но поскольку смысл этого не понимал, то как-то удалось избавиться от этих лишних строк (не помню как).
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
13.01.2013, 22:27 4
Цитата Сообщение от spyphy Посмотреть сообщение
а в чем тут фишка, что данная конструкция означает?
Опережающее объявление. Указывает компилятору, что такой класс есть, но он где-то далее объявлен.
0
13.01.2013, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2013, 22:27
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru