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

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

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

классы и заголовочные файлы - C++

13.01.2013, 20:35. Просмотров 259. Ответов 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_ */
Код
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
Если запихать такое в одни файл, то (как ни странно) работало, а счас не хочет...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 20:35     классы и заголовочные файлы
Посмотрите здесь:

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

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

Заголовочные файлы - C++
Подключил два заголовочных файла, при компиляции пишет, что не знает имени функции Header.h #pragma once float F1(float* ar1,...

Заголовочные файлы - C++
Всем добрый день! Пытался найти информацию по созданию заголовочных файлов, да не нашел. У меня есть здоровая шаблонная функция ...

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

заголовочные файлы - C++
напишите пожалуйста,что делают заголов.файлы &lt;io.h&gt; и &lt;direct.h&gt; Добавлено через 8 минут и расшифруйте условие: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
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_ */
spyphy
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 35
13.01.2013, 21:06  [ТС]     классы и заголовочные файлы #3
ага, работает.
а в чем тут фишка, что данная конструкция означает?
когда в одном файле всё было, поначалу тоже писал class Class1; class Class2; перед определениями классов, но поскольку смысл этого не понимал, то как-то удалось избавиться от этих лишних строк (не помню как).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 22:27     классы и заголовочные файлы
Еще ссылки по теме:

Заголовочные файлы - C++
Подскажите, во время компоновки, в итоге, &quot;присоединяются&quot; к экзешнику все функции/объекты и тдп. которые указаны в заголовочном файле, или...

Заголовочные файлы - C++
Добрый день. Вот такой вопрос. Пишу на Борланде. Не пойму как писать, если классы помещать в свои файлы. Вот например,...

заголовочные файлы в с++ - C++
я вот не могу понять, их обязательно делать в своих программах? В том смысле, что бы код был, так сказать &quot;правильным, хорошим&quot;. Хотел...

Заголовочные файлы - C++
Здравствуйте ув. Пользователи, У меня такой вопрос: Есть ли хорошие книги по заголовочным файла как правильно ими пользоваться... Просто...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
13.01.2013, 22:27     классы и заголовочные файлы #4
Цитата Сообщение от spyphy Посмотреть сообщение
а в чем тут фишка, что данная конструкция означает?
Опережающее объявление. Указывает компилятору, что такой класс есть, но он где-то далее объявлен.
Yandex
Объявления
13.01.2013, 22:27     классы и заголовочные файлы
Ответ Создать тему
Опции темы

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