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

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

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

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

11.09.2013, 19:52. Просмотров 2015. Ответов 44
Метки нет (Все метки)

Всем здрасти!

Имеем простецкий код:
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
Сообщений: 336
18.09.2013, 20:43  [ТС]     Объявление и определение классов #41
Цитата Сообщение от alsav22 Посмотреть сообщение
Либерти...
Очень классная книга. Автор не использует пятиэтажные ссылки и односложные ответы. Все разложено по полочкам и объяснено с точки зрения смысла применения. Советую почитать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 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
Сообщений: 336
19.09.2013, 19:56  [ТС]     Объявление и определение классов #43
Я не вьехать не могу, я уже выработал правила дизайна построения классов и их расположения. Я просто вразумительный ответ хочу получить, мне интересно осмысливают ли участники этой перепалки логику построения кода, и классов в частности, или просто используют то, что им написали в книжках... Вопрос следующий: зачем реализацию класса отделять от объявления? Почему это "лучше" чем, если весь код класса запихать в одну "голову"?
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 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++ Объявление и определение глобального массива структуры
C++ Нюансы терминологии и синтаксиса: объявление и определение
C++ Работа с классами. Объявление классов наследования - C++

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 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     Объявление и определение классов
Ответ Создать тему
Опции темы

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