1 / 1 / 0
Регистрация: 10.12.2017
Сообщений: 48
1

Объект класса является массивом

18.08.2020, 11:23. Показов 541. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, захотелось мне написать свой класс вектора, только не понимаю как это можно реализовать. То есть как сделать так, чтобы объект созданного класса Dynamic_array являлся массивом?(Ну, наверное никак, ведь объекты будут иметь тип Dynamic_array и совсем не будут массивами?). Хочется, чтобы результат выглядел как-то так:

C++
1
Dynamic_array<TYPE> arr(/*параметры конструктора*/);
То есть чтобы arr представлял из себя выделенную область памяти ну и чтоб для каждого объекта Dynamic_array можно было хранить в отдельных переменных капасити, размер и т д. Ну и вот вопрос возник, как средствами языка реализовать подобную штуку, буду благодарен за помощь, где и что мне нужно почитать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2020, 11:23
Ответы с готовыми решениями:

как узнать,является данный объект класса А1 наследником класса А2
Всем привет)есть классы S, A1, A2, B1, B2. Иерархия наследования следующая S - Является...

Объект класса string не является однозначным
Вот ошибка: Ошибка 1 error C2872: left: неоднозначный символ c:\users\м\desktop\documents\visual...

Компилятор считает объект l-value, но объект таковым не является
итак есть базовый абстрактный класс Дерево, есть два его наследника Плодовое Дерево и Лесное...

Создать объект производного класса с передачей параметров в конструктор базового класса
Доброго времени суток! Если не затруднит, утолите мой интерес, пожалуйста! Есть базовый и...

15
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
18.08.2020, 11:29 2
Заводишь указатель типа TYPE
C++
1
TYPE* Ptr;
В конструкторе создаешь массив оператором new
C++
1
Ptr = new TYPE[N];
В деструкторе высвобождаешь память
C++
1
delete[] Ptr;
1
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
18.08.2020, 11:33 3
Вы знакомы с placement new? Если нет, то сначала стоит разобраться с оным.
1
1 / 1 / 0
Регистрация: 10.12.2017
Сообщений: 48
18.08.2020, 11:37  [ТС] 4
А можно чуточку подробнее? Дело в том, что я вообще не знаю как создать подобную конструкцию
Код
Dynamic_array<TYPE> arr(/*параметры конструктора*/);
То есть чтобы я мог указывать какие-то параметры в угловых скобках и подобное. Можете сказать как это называется, сказать какие-то общие термины, чтобы я мог это как-то загуглить?
0
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
18.08.2020, 11:38 5
Шаблон это называется. Можешь поискать "C++ шаблоны"
1
1 / 1 / 0
Регистрация: 10.12.2017
Сообщений: 48
18.08.2020, 11:38  [ТС] 6
Да, с тем как просто в мейне выделить область памяти и написать функции для работы с ней я знаю, меня интересует именно как сделать так, чтобы мой массив являлся объектом класса(?) или даже не знаю как верно выразиться
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
18.08.2020, 11:38 7
smurf19458, это шаблоны. Если вы совсем ими не умеете пользоваться, то стоит сначала основательно их изучить, прежде чем писать свой вектор.

P.S. ИМХО, вектор это самый сложный для реализации контейнер.
1
1 / 1 / 0
Регистрация: 10.12.2017
Сообщений: 48
18.08.2020, 11:41  [ТС] 8
спасибо
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
18.08.2020, 11:42 9
Цитата Сообщение от smurf19458 Посмотреть сообщение
То есть как сделать так, чтобы объект созданного класса Dynamic_array являлся массивом?
Просто переопредели у него оператор []
1
2523 / 1243 / 459
Регистрация: 08.11.2016
Сообщений: 3,412
18.08.2020, 17:35 10
Croessmah, сложнее std::map ?
0
Croessmah
18.08.2020, 17:50
  #11

Не по теме:

Annemesski, я, вроде бы, написал, что он самый сложный.

0
Annemesski
18.08.2020, 17:52
  #12

Не по теме:

Croessmah,

я, вроде бы, написал...
я не поверил....

0
Croessmah
18.08.2020, 18:03
  #13

Не по теме:

Annemesski, а со второго раза поверил? )))

0
Annemesski
18.08.2020, 18:07
  #14

Не по теме:

Croessmah, нед )))

0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
18.08.2020, 18:23 15
Цитата Сообщение от Croessmah Посмотреть сообщение
P.S. ИМХО, вектор это самый сложный для реализации контейнер.
А что в нём такого сложного?
0
Croessmah
18.08.2020, 18:34     Объект класса является массивом
  #16

Не по теме:

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А что в нём такого сложного?
Остальные проще.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2020, 18:34

Можно ли создать объект класса с таким же именем как у самого класса?
Можно ли создать объект класса с таким же именем как у самого класса? Ну или как то обойти эту...

Почему объект производного класса не видит префиксный оператор из базового класса?
Короче создал я базовый класс с перегруженным префиксным оператором ++. Потом чтоб его...

Как сложить объект базового класса с объектом производного(наследуемого класса)
Как умножить объект базового класса с объектом производного(наследуемого класса): ozenka - объект...

Использование в качестве поля класса указатель на объект другого класса
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс...

Ошибка компиляции (преобразование объекта класса в объект другого класса)
Друзья, добрый день! Не могу понять почему выдается ошибка компиляции... Прога преобразует...

Указатель на объект базового класса и адрес объекта производного класса
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; }...


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

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

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