Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
shults95
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 28
#1

Абстрактный класс и массив указателей - C++

28.02.2013, 16:41. Просмотров 1528. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Растолкуйте кто в курсе.

Есть базовый абстрактный класс
C++
1
2
3
4
5
class Base
{
    public:
         virtual void InterMorda (void)=0;
}
и наследники
C++
1
2
3
4
5
6
7
8
9
10
11
class B: public Base
{
   public:
         void InterMorda(void);
}
 
class С: public Base
{
   public:
         void InterMorda(void);
}
Как создавать динамический массив указателей базового класса?(или такого нельзя сделать)

int N=3;
Base *base =new Base [N]; //такая конструкция не работает.

Base *base[10]; //- причем статический массив создать можно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 16:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактный класс и массив указателей (C++):

Вектор указателей на абстрактный класс? - C++
Решаю задачу из книги, там сказано так: "Напишите main(), где создавался бы массив указателей на класс publication. Это очень похоже...

Сортировка массива указателей на абстрактный базовый класс - C++
Я создал абстрактный базовый класс (с названием Base) и два производных класса (с названиями Two и Three). После инициализации объектов...

Определить массив ссылок на абстрактный класс - C++
Было задание создать абстрактный базовый класс с виртуальной функцией - площадь. Создать производные классы: прямоугольник, круг,...

опп класс и массив (создать массив указателей по выборке животных, участвующих в забеге) - C++
Здравствуйте! Есть задача... вкратце. Нужно создать массив указателей по выборке животных участвующих в забеге. Это Лошадь, Крокодил,...

массив указателей на базовый класс - C++
покажите пожалуйста на простом примере)))(а то я не оч понимаю:cry:)

Как передать в функцию двумерный массив указателей на класс? - C++
у меня есть std::vector<Monster*> monsters; Rect *pole; int pacmen_distance; Monster и Rect два...

6
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
28.02.2013, 16:57 #2
Цитата Сообщение от shults95 Посмотреть сообщение
int N=3;
Base *base =new Base [N]; //такая конструкция не работает.
Base *base[10]; //- причем статический массив создать можно.
Первый и второй случай отличаются. Потому что во втором случае ты создаешь массив указателей на абстрактные объекты, что делать можно. А в первом случае ты создаешь массив абстрактных объектов.

Добавлено через 9 минут
Этому выражению:
C++
1
2
int N=3;
Base *base =new Base [N];
соотвтетсвует вот такое определение статического массива:
C++
1
Base base[3];
0
shults95
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 28
28.02.2013, 17:01  [ТС] #3
ААААА. Начинаю врубаться.

надо было:
int N=3;
Base *base;
base=new Base*[N];
0
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
28.02.2013, 17:09 #4
А может так:
C++
1
2
3
int N=3;
Base **base;
base=new Base*[N];
Добавлено через 3 минуты
Эта строчка:
C++
1
new Base*[N]
создает массив указателей Base, но при этом возвращает указатель на первый элемент этого массива. А первый элемент будет иметь тип не Base, а Base*, тогда указатель на него будет Base**. Значит base должен иметь тип Base**.
1
Croessmah
28.02.2013, 17:25
  #5

Не по теме:

Цитата Сообщение от shults95 Посмотреть сообщение
Есть базовый абстрактный класс
а еще есть теги для подсветки кода.
Выделяете необходимый код и нажимаете:
Абстрактный класс и массив указателей

1
shults95
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 28
28.02.2013, 17:27  [ТС] #6
кажись понял.

то есть например если int *A= new int[N] то создается N мест для хранения типа int;
а если int **A=new int*[N] то создается Т мест для типа int*
0
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
28.02.2013, 17:29 #7
Цитата Сообщение от shults95 Посмотреть сообщение
то есть например если int *A= new int[N] то создается N мест для хранения типа int;
а если int **A=new int*[N] то создается Т мест для типа int*
Верно
2
28.02.2013, 17:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 17:29
Привет! Вот еще темы с ответами:

Класс: Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. - C++
Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. Создать производные классы: Rectangle...

Абстрактный класс, наследование, класс хранится в другом классе - C++
Нужна помощь. Написать программу: 1 класс. Имеется абстрактный класс который описывает какую-то сущность, например Человек. В абстрактном...

Массив указателей на массив строк и сортировка массива указателей - C++
Добрый день. Поступил вопрос. Есть задача. У нас встроенный массив char mass;.Мы вводим строки до тех пор, пока не будет заполнен массив...

по поводу указателей. Как правильно задавать массив указателей и его удалять? - C++
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?; как массив обнулить не ясно ...


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

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

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