Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972

Структура в качестве типа данных

05.12.2016, 01:27. Показов 504. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Столкнулся со следующей проблемой.
Есть общая структура:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
struct AllTypeData {
   int X[3];
   int Y;
   int Z[4];
 
   AllTypeData() {
      memset(X, 0, sizeof(X));
      Y = 0;
      memset(Z, 0, sizeof(Z));
   }
};

В зависимости от типа объекта (класс А или класс B) данная структура заполняется по разному с сохранением 0 в "пустых" полях. Также данная структура используется в методах базового класса Base и как общий тип данных такая структура подходит, но мне не очень это нравится.
Хотелось бы определить для каждого класса свою структуру, но вот не понимаю, что тогда должно быть в базовом классе в качества типа данных. Поскольку основной принцип метода JustDoIt не поменяется, то детали можно доопределить в каждом классе.
Для наглядности:
Кликните здесь для просмотра всего текста
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
class Base {
protected:
   AllDataType data;  // что тут должно быть в результате???
public:
   JustDoIt(); // спокойно используем data, 
                    // т.к. "пустые" поля равны 0.
};
 
class A : public Base {
public: 
   A() {
      memset(data.X, 1, sizeof(X));
      data.Y = 1;
      memset(data.Z, 1, 2 * sizeof(int));
   }
};
 
class B : public Base {
public:   
   B() {
       memset(data.X, 2, sizeof(int));
       memset(data.Z, 2, sizeof(Z));
   }
};


Добавлено через 1 час 52 минуты
Р.S. Созрела такая идея:
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
29
30
struct BaseType {}; 
 
class Base {
protected:
   BaseType *data;
   virtual void JustDoIt_TypeA() = NULL;
public:
   Base() : data (nullptr) {}
   JustDoIt();
   virtual ~Base() = NULL;
}
 
struct TypeA : BaseType {
   int X[3];
   int Y;
   int Z[2];
 
   TypeA() {
       memset(X, 1, sizeof(X));
       Y = 1;
       memset(Z, 1, sizeof(Z));
   }
}
class A : public Base {
   void JustDoIt_TypeA() override;
public:
   A() { data = new TypeA(); }
   ~A() { delete data; }
}
// Аналогично для класса B
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2016, 01:27
Ответы с готовыми решениями:

Структура данных типа стек
Здравствуйте! Я начал изучать С++, в учебном заведении дали задачу, я написал код, но не могу понять в чем именно ошибка. Задача такова:...

Функция для ввода данных типа структура
Здравствуйте. Не могу разобраться с функцией для ввода данных. Присутствуют структуры. Не понимаю что именно надо передать в функцию...

константа в качестве параметра типа структура в clang
Доброго дня всем. В программе для оптимизации создаю std::vector<my_struct> tla; где хранится информация по загрузке данных из большого...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2016, 01:27
Помогаю со студенческими работами здесь

Использование файлов и данных типа “структура”
Предусмотреть запись исходных данных в файл и возможность чтения из него. Результат вы-вести на экран и в файл. различные цеха завода...

Переменная в качестве имени типа данных
Можно ли сделать нечто подобное: class MyClass{} string Type_name = "MyClass"; Type_name object_name = new Type_name(); ...

Передача массива данных пользовательского типа в качестве аргумента функции
Добрый день! массив ParamArray всегда имеет тип данных Variant В функцию передаются пользователем по 3 элемента...

Generic коллекция с классом в качестве типа данных. Правильность кода
Здравствуйте. Реализовал вот это. /// <summary> /// Global Object /// </summary> public static class GO ...

Есть ли в Java встроенная структура данных типа словарь - список пар {ключ : значение} ?
Здравствуйте! Есть ли в Java встроенная структура данных типа словарь - список пар {ключ : значение} ? Upd. Вспомнил ключевое слово -...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru