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

Объявление и определение классов - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 329
11.09.2013, 19:52     Объявление и определение классов #1
Всем здрасти!

Имеем простецкий код:
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
class Node;
class HeadNode;
class TailNode;
class Node
{
public:
Node() {}
virtual ~Node(){}
};
 
class HeadNode : public Node
{
Node * myNext;
public:
HeadNode() {myNext = new TailNode;}
~HeadNode() {delete myNext;}
};
 
class TailNode : public Node
{
TailNode() {}
~TailNode() {}
};
 
int main()
{
return 0;
}
Если скомпилить этот код, то нам покажут ошибку "TailNode: нет подходящего конструктора".
Если переставить местами классы TailNode и HeadNode, то программа заработает... Но если, после этого нам нужно добавить еще один класс, производный от Node, то нам опять придется определять, где же его расположить, чтобы он определялся до всех своих упоминаний.
Так вот - подскажите пожалуйста, как правильно объявить все классы до их определения, чтобы программа могла видеть все созданные классы, независимо от своего расположения? (так как объявил классы я "class Node;" - не помогает).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 329
18.09.2013, 20:43  [ТС]     Объявление и определение классов #41
Цитата Сообщение от alsav22 Посмотреть сообщение
Либерти...
Очень классная книга. Автор не использует пятиэтажные ссылки и односложные ответы. Все разложено по полочкам и объяснено с точки зрения смысла применения. Советую почитать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.09.2013, 23:07     Объявление и определение классов #42
Цитата Сообщение от BESSON_off Посмотреть сообщение
Очень классная книга. Автор не использует пятиэтажные ссылки и односложные ответы. Все разложено по полочкам и объяснено с точки зрения смысла применения. Советую почитать.
что ж ты тогда уже 5 страниц темы да с такой книжкой въехать не можешь
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 329
19.09.2013, 19:56  [ТС]     Объявление и определение классов #43
Я не вьехать не могу, я уже выработал правила дизайна построения классов и их расположения. Я просто вразумительный ответ хочу получить, мне интересно осмысливают ли участники этой перепалки логику построения кода, и классов в частности, или просто используют то, что им написали в книжках... Вопрос следующий: зачем реализацию класса отделять от объявления? Почему это "лучше" чем, если весь код класса запихать в одну "голову"?
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
19.09.2013, 20:00     Объявление и определение классов #44
Цитата Сообщение от BESSON_off Посмотреть сообщение
Вопрос следующий: зачем реализацию класса отделять от объявления?
По-моему это очевидно.. Если у тебя проект а-ля "Hello World", то нет смысла разделять реализацию от определения. Иначе, если проект сложный - наоборот. Почему ты сам этого не можешь понять?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2013, 21:16     Объявление и определение классов
Еще ссылки по теме:

C++ Предварительное объявление классов. Вызвать функцию до реализации класса
Объявление и определение функции C++
C++ Объявление и определение шаблонного класса

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.09.2013, 21:16     Объявление и определение классов #45
Цитата Сообщение от BESSON_off Посмотреть сообщение
Я не вьехать не могу, я уже выработал правила дизайна построения классов и их расположения
выбрал ты какую-то хрень потому что не знаешь как это все работает, в том числе и как работает компилятор.
текст программы анализируется посимвольно, символ за символом, строчка за строчкой. доходит он до 15-й строчки
Цитата Сообщение от BESSON_off Посмотреть сообщение
C++
1
HeadNode() {myNext = new TailNode;}
и он(компилятор) знает что TailNode это класс, но он не знает какие конструкторы есть у этого класса.
Yandex
Объявления
19.09.2013, 21:16     Объявление и определение классов
Ответ Создать тему
Опции темы

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