5 / 5 / 6
Регистрация: 17.05.2014
Сообщений: 61
1

Структура внутри класса

04.01.2016, 23:07. Показов 2360. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой вопрос, целесообразно ли делать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class StudentGroup
{
private:
    struct  Student
    {
        string name;
        string phone;
        string dateOfBirth;
    };
    vector<Student> vecStud;
public:
// функции
};
Т.е. объявлять структуру внутри класса в private зоне, при условии, что использоваться она будет только в классе. Или лучше объявить её отдельно? Или в public? Или есть другое решение?

Хочется узнать "Красиво" ли вообще объявлять так структуру
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2016, 23:07
Ответы с готовыми решениями:

Структура внутри класса
Добрый вечер всем! Прошу помощи в таком моменте: мне нужно было создать класс со структурой внутри,...

Структура внутри класса и передача массива
Вообщем есть базовый класс. pointsClass.h #ifndef pointsClass_H class pointsClass {...

Конструктор внутри класса, поля которого являются членами другого класса
Вот фрагмент кода. class Class_Figure { Class_Triangle tr1; Class_Circle cr1; public:...

Создать объект внутри класса, который может вызывать функцию этого класса
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы...

3
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
04.01.2016, 23:17 2
В общем случае так делать - вполне нормально, размещать различные хелперы в закрытой зоне.
Но непосредственно в вашем случае видя буквы Student и StudentGroup - я бы такое решение назвал кривой архитектурой.

Но в общем случае это нормально, и если вас устраивает :
Цитата Сообщение от Forrgit Посмотреть сообщение
что использоваться она будет только в классе
то нет проблем.

Другое хорошее на сегодня решение : анонимное или безымянное пространство имен.
2
5 / 5 / 6
Регистрация: 17.05.2014
Сообщений: 61
05.01.2016, 11:27  [ТС] 3
Что значит кривая архитектура? Подскажите, пожалуйста, более правильный вариант
0
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
05.01.2016, 11:48 4
Цитата Сообщение от Forrgit Посмотреть сообщение
Что значит кривая архитектура? Подскажите, пожалуйста, более правильный вариант
Вы сами написали ограничение от этого подхода:
Цитата Сообщение от Forrgit Посмотреть сообщение
использоваться она будет только в классе
Откуда следовательно нагрузка на класс StudentGroup будет очень высокой, он рискует стать годобжектом.
В моём понимании StudentGroup может читать и как-то фильтровать студентов.
Например(псевдокод использования)
C++
1
2
3
4
5
StudentGroup students;
std::ifstream file(fileName);
file >> students;
students.addFilter(students::filters::containsName("blaBla"));
std::cout << students;
Другое использование я как-то представить не могу, да и фильтрация тоже притянута за уши, в реалиях С++ делать такие фильтры имеет смысл в случае их особенной сложности, частоты использования и комбинировании друг с другом.

Цитата Сообщение от Forrgit Посмотреть сообщение
объявлять структуру внутри класса в private зоне
Нужно делать только в случае если вам нужно именно скрыть определение( например это локальный для класса помощник).
В остальных случаях - описывать его открытым.

1) Если это лабораторная работа или вы изучаете это дело - пишите и не парьтесь
2) Если же это важный код - то моё ИМХО - студент не должен быть скрыт в группе студентов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2016, 11:48
Помогаю со студенческими работами здесь

Наследование: Как мне определить любой из методов заданного класса внутри другого класса?
Добрый день, подскажите пожалуйста, что я делаю не так Есть файл Container.h в котором храню...

Заполнение вектора класса внутри самого класса
class A { private: int a; public: A() { a = 0; }; A get(vector &lt;A&gt;* vec)

BST дерево. Инициализация класса внутри класса
Здравствуйте, нужно реализовать класс дерева бинарного поиска с использованием итератора. Возник...

delete внутри класса для самого класса
Доброго времени суток, пишу программу для работы с матрицами. По условию дали лишь несколько...

Структура внутри структуры
Вопрос следующий... Есть структура следующего вида : struct student { int...

Методы класса внутри определения класса
Все привет! Решил закрепить свои знания по C++, читаю Р.Лафоре - &quot;Объектро-ориентированное...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru