Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
#1

Динамическая память, свой класс - C++

23.01.2013, 02:44. Просмотров 412. Ответов 9
Метки нет (Все метки)

Есть свой класс.
Пусть будет Class.
У него есть потомки. SubClassA и SubClassB.
Необходимо динамически выделить массив указателей на главный класс и заполнить его.
Такой вариант:
C++
1
2
3
4
5
6
SubClassA *A = new SubClassA(bob);
SubClassB *B = new SubClassB(bob);
 
Class *ptr[5] = {A, B};
// и обращаемся.
ptr[0]->Get();
выделили. и даже динамически. но мне необходимо написать что-то подобное.
Объявили массив указателей, а затем где-то дальше в программе выделили нужное кол-во памяти. например вбили с клавы и объявили.
C++
1
2
3
4
5
6
7
SubClassA *A = new SubClassA(bob);
SubClassB *B = new SubClassB(bob);
Class *ptr;
ptr = new Class[2];
ptr[0] = A;
ptr[1] = B;
ptr[0]-> Set(ptr[1]->Get());
как это сделать?

ведь код типа
C++
1
2
3
4
int *mas;
mas = new int[5];
for(int i = 0; i < 5; i++)
    mas[i] = i;
работает. мне необходимо что-то подобное.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2013, 02:44     Динамическая память, свой класс
Посмотрите здесь:

Статическая память,Динамическая память. - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Динамическая память - C++
Народ, если кому не сложно помогите переделать вот эту программу со структурами нужно сделать так чтобы для хранения данных она...

Динамическая память - C++
Как создать массив A через динамическую память ???

Динамическая память - C++
Добрый вечер! Возникла у меня такая проблемка, нужно от статической памяти перейти к динамической. То ли уже голова не варит, то ли руки не...

Задачка: Динамическая память - C++
Задачка: В динамическую память занести набор введенных с клавиатуры длинных целых натуральных чисел (признак завершения ввода - число...

Динамическая память и строки - C++
Подскажите пожалуйста , как выделить динамическую память под строку , а потом освободить её? это будет что-то типа такого ...? char...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.01.2013, 04:37     Динамическая память, свой класс #2
C++
1
2
3
4
5
SubClassA *A = new SubClassA(bob);
SubClassB *B = new SubClassB(bob);
Class** ptr = new Class*[2];
ptr[0] = A;
ptr[1] = B;
iifat
2218 / 1371 / 101
Регистрация: 05.06.2011
Сообщений: 3,770
23.01.2013, 04:40     Динамическая память, свой класс #3
Проблем-то с какого места? Насколько могу судить, все три фрагмента ошибок не содержат.
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
23.01.2013, 14:14  [ТС]     Динамическая память, свой класс #4
Jupiter, а я обрадовался. вы мне всегда помогали.
Ваш код (или мой предыдущий косяк) выдает такую ошибку на строках
Цитата Сообщение от Jupiter Посмотреть сообщение
ptr[0] = A;
ptr[1] = B;
String is inaccessible base of SubClassA и то же для B.
Я так понял это с правами доступа при наследовании.
у меня классы унаследованы с правами private, нужные поля в базовом классе в полях protected.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Class {
protected:
    int a, b;
public:
    // methods
};
 
class SubClassA: private Class {
    // private methods
public:
    // public methods
};
 
class SubClassB: private Class {
    // private methods
public:
    // public methods
};
у меня было сделано так. я поправил права при наследовании на public и все работает. но разве у меня было неправильно?


Jupiter,
и еще все таки.
мне нужна такая запись
C++
1
2
3
4
5
6
SubClassA *A = new SubClassA(bob);
SubClassB *B = new SubClassB(bob);
Class** ptr;
ptr = new Class*[2];
ptr[0] = A;
ptr[1] = B;
обратите внимание на строки 3 и 4.

Дело в том, что мне нужно объявить указатель в начале.
Затем в одной ветке меню его инициализировать (то есть ptr = new Class*[2], затем в третьей ветке его заполнить.
ptr[0] = A; ptr[1] = B;. Заранее Спасибо.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.01.2013, 15:00     Динамическая память, свой класс #5
все правильно компилятор ругается, чем обосновано приватное наследование в вашей задаче?
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
23.01.2013, 15:43  [ТС]     Динамическая память, свой класс #6
Цитата Сообщение от VladSharikov Посмотреть сообщение
Дело в том, что мне нужно объявить указатель в начале.
Затем в одной ветке меню его инициализировать (то есть ptr = new Class*[2], затем в третьей ветке его заполнить.
ptr[0] = A; ptr[1] = B;. Заранее Спасибо.
ключевой вопрос в этом.
знаете как это разрешить?

хорошо поправлю права при наследовании.
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
25.01.2013, 15:51  [ТС]     Динамическая память, свой класс #7
Jupiter,

вопрос еще открыт.
Вы не поможете? из-за этого не могу решить задачу.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.01.2013, 17:31     Динамическая память, свой класс #8
повторяю вопрос
Цитата Сообщение от Jupiter Посмотреть сообщение
чем обосновано приватное наследование в вашей задаче?
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
25.01.2013, 20:50  [ТС]     Динамическая память, свой класс #9
Я считал, что в базовом классе поле, которое должно быть защищено, должно быть protected, а наследуемый должен быть private. Один из принципов ооп, не помню название.

Я не об этом. Я о объявлении и инициализации указателей на базовый класс.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 13:48     Динамическая память, свой класс
Еще ссылки по теме:

Указатели. Динамическая память. - C++
Нужно очень срочно. Сегодня последний день сдачи. 1. Дано натуральное число n. Определить количество цифр в цифровой записи данного...

Динамическая память в ООП - C++
Здравствуйте, программа должна находить площадь и определять равносторонний ли треугольник. Площадь ищется только в случае равенства трех...

Динамическая память и массивы - C++
Всем доброе утро . Решил по практиковаться и задался вопросом у меня есть массив a; как ему динамическую память выделить? как понял...

строки и динамическая память - C++
определить количество слов в строке, начинающихся с заданной пары символов. Строка размещается в динамической памяти


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
29.01.2013, 13:48     Динамическая память, свой класс #10
Цитата Сообщение от VladSharikov Посмотреть сообщение
а наследуемый должен быть private
Это неверно. Сделав наследование приватным, вы сделали все методы базового класса приватными для доступа через производный класс.

Добавлено через 2 минуты
Цитата Сообщение от VladSharikov Посмотреть сообщение
Один из принципов ооп, не помню название.
Принципов ООП всего три: инкапсуляция, полиморфизм, наследование. Под наш случай больше всего подходит наследование, но в этот принцип никак не может входить уровень доступа при наследовании просто потому, что это особенность реализации. В таких языках, как C# или Java, уровень доступа при наследовании вообще нельзя указывать, он публичный всегда, но от этого данные языки не перестают быть объектно-ориентированными.
Yandex
Объявления
29.01.2013, 13:48     Динамическая память, свой класс
Ответ Создать тему
Опции темы

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