Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
#1

Nested classes && enum declaration - C++

14.04.2015, 22:06. Просмотров 298. Ответов 3
Метки нет (Все метки)

Добрый вечер,

вопрос больше наверно с тем холливаров: зачем использовать вложенные классы и enum class'es, если можно их вынести в отдельный файл и использовать многоразово. Описали новую сущность и приковали наручниками к другой сущности - это же жестоко.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2015, 22:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Nested classes && enum declaration (C++):

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...

STL & classes - C++
Товарищи, выручайте. Ситуация следующая. Имеется два *.h файла, в каждом файле отдельный класс, которые взаимодействуют друг с другом....

Visual C++ & enum - C++
Проблема в том что мой компилятор считает нормальным следующий код: typedef enum {otvet1, otvet2, otvet3} otvet_type; typedef enum...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& - C++
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

3
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
14.04.2015, 22:25 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вложенность подчеркивает связанность сущностей. Нет смысла выносить вложенную сущность наружу, если она не должна по идеологии использоваться самостоятельно.
3
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
14.04.2015, 22:29  [ТС] #3
Читал об этом, там было по другому: "делая класс nested мы говорим, что он полностью подчинается данному классу и не может использоваться вне. Более того, public и private секция nested класса может меняться программистом как угодно, ведь не кто не даёт гарантии на nested классы, а только на интерфейс своего разрабатываемого класса".

Еще бы плюсов этого ужаса!

Еще не забываем обсуждать этот бред (как по мне)
C++
1
2
3
4
5
6
7
8
9
10
class Foo
{
    enum class Way
    {
        LEFT,
        RIGHT,
        TOP,
        BOTTOM,
    };
};
Такое ощущение, что настолько тяжело вынести enum в целях расширяемости в отдельный класс
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
14.04.2015, 22:31 #4
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Более того, public и private секция nested класса может меняться программистом как угодно
Если вложенный класс находится в public или protected части, то public часть вложенного класса всё же менять без последствий не получится.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2015, 22:31
Привет! Вот еще темы с ответами:

Порядок вычисления: операторы «|» и «||», «&» и «&&» - C++
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга порядком вычеслений, а в C++ так же как и в Java или...

Friend ostream& operator<<(ostream& stream, CArr& obj); - C++
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void swap(int *a, int *b); void swap(int &amp;a, int &amp;b); ...

Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &) - C++
Добрый день. Как осуществляется выделения памяти под перегруженный оператор ввода данных в пользовательский тип? Ведь мы заранее не можем...

Нюансы синтаксиса: где, как и для чего используется && - C++
Когда применяется ссылка на ссылку? В STL есть классы, конструкторы которых принимают ссылку на ссылку. Попробовал понять для чего они...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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