Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
1

Как поместить в объявленную память переменную класса?

26.05.2017, 23:08. Просмотров 159. Ответов 8
Метки нет (Все метки)

Вот, например, создал я массив
C++
1
class_name *array = new class_name [size];
Как я могу теперь засунуть в массив какие-нибудь переменные класса, не создавая этих переменных?
Чтоб то, что я написал, было понятнее, вот так с созданием переменных:
C++
1
2
3
4
5
6
for(int i = 0; i < size; i++){
 
    class_name object(что-то, необходимое для конструктора);
    arr[i] = object;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2017, 23:08
Ответы с готовыми решениями:

Как вывести переменную, объявленную в конце программы, в начале?
Надо вывести на экран несколько массивов. При этом первые 3 считаются в начале...

Как поместить число 4294967296 в переменную?
делаю ip калькулятор, если используется маска 0.0.0.0 то кол-во хостов в сети...

Как поместить в шаблон статическую переменную?
мучаюсь вторые стуки, не где не могу найти решения проблемы, смысл в следующим,...

Как получить private переменную класса, функцей членом другого класса
Игра змейка: Есть класс поле в котором содержится размеры поля: class...

Как, создавая указатели, поместить их в уже выделенную динамическую память?
С++ как создавая указатели поместит их в уже выделенную динамическую память ...

8
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.05.2017, 23:15 2
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
Как я могу теперь засунуть в массив какие-нибудь переменные класса
Вот так из засунуть:
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
C++
1
arr[i] = object;
Или нужно без присваивания?
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7056 / 3358 / 455
Регистрация: 04.12.2011
Сообщений: 9,341
Записей в блоге: 5
26.05.2017, 23:21 3
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
Как я могу теперь засунуть в массив какие-нибудь переменные класса, не создавая этих переменных?
Пользуясь вашим языком можно посоветовать воспользоваться плейсментньюмом как пихалкой.
0
Mournful Max
Велосипедист...
346 / 213 / 74
Регистрация: 15.12.2015
Сообщений: 784
Завершенные тесты: 1
26.05.2017, 23:21 4
Цитата Сообщение от nd2 Посмотреть сообщение
Вот так из засунуть
Ну он так сует экземпляр, а ему поля засовывать нужно
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7056 / 3358 / 455
Регистрация: 04.12.2011
Сообщений: 9,341
Записей в блоге: 5
26.05.2017, 23:25 5
Цитата Сообщение от Captain Maxee Посмотреть сообщение
поля засовывать
Хуже. Задача запхать переменные не создавая их. То есть скоструивать сварганить в ячейках.
0
Mournful Max
Велосипедист...
346 / 213 / 74
Регистрация: 15.12.2015
Сообщений: 784
Завершенные тесты: 1
26.05.2017, 23:26 6
Хотя... Там вообще не понятно что происходит.
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
arr[i]
Что за arr...

Добавлено через 59 секунд

Не по теме:

IGPIGP, :D

0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
26.05.2017, 23:30 7
Placement (размещающий) оператот new:
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
31
32
33
34
35
36
37
38
39
40
class Base 
{
     int a;
public:
    
    Base(int x) : a(x)
    { cout << "Base()\n"; }
    
     ~Base() 
    { cout << "~Base()\n"; }
}; 
 
 
 
int main()
{
    void* buffer = operator new [](sizeof(Base) * 10);
    Base* pb = static_cast<Base*>(buffer);
    
    for (int i = 0; i < 10; ++i)
    {
        new(pb + i) Base(i);
    }
    
    for (int i = 0; i < 10; ++i)
    {
        cout << (pb + i) ->a << endl;
    }
    
    // необходим ручной вызов деструктора
    for (int i = 9; i >= 0; --i) 
    {
        pb[i].~Base();
    }
 
    operator delete [] (buffer);
 
    system("pause");
    return 0;
}
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7056 / 3358 / 455
Регистрация: 04.12.2011
Сообщений: 9,341
Записей в блоге: 5
26.05.2017, 23:31 8
Цитата Сообщение от Captain Maxee Посмотреть сообщение
IGPIGP,

А если серьёзно, то создавая
Цитата Сообщение от Unicorn_666 Посмотреть сообщение
class_name *array = new class_name [size];
уже создаются экземпляры - конструктором по умолчанию, у них нет имени, но это объекты. В этом смысле совет nd2, вполне нормален.
0
Unicorn_666
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 34
Завершенные тесты: 1
27.05.2017, 12:45  [ТС] 9
Всем спасибо!
0
27.05.2017, 12:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2017, 12:45

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся...

Как выделить память для класса
Привет, я пишу библиотеку управления памятью. На данный момент я выделяю память...

Деструктор класса. Как правильно очистить память?
Добрый день! Написал прогу бинарного дерева поиска, все работает, но нужен...


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

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

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