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

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

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

Есть базовый абстрактный класс
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]; //- причем статический массив создать можно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 16:41     абстрактный класс и массив указателей
Посмотрите здесь:

C++ абстрактный класс
C++ С++, как передать в функцию двумерный массив указателей на класс
Абстрактный класс C++
C++ Абстрактный класс
C++ Сортировка массива указателей на абстрактный базовый класс
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StasGamilton
Эксперт по пяченькам
 Аватар для 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];
shults95
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 28
28.02.2013, 17:01  [ТС]     абстрактный класс и массив указателей #3
ААААА. Начинаю врубаться.

надо было:
int N=3;
Base *base;
base=new Base*[N];
StasGamilton
Эксперт по пяченькам
 Аватар для 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**.
Croessmah
28.02.2013, 17:25
  #5

Не по теме:

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

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*
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 17:29     абстрактный класс и массив указателей
Еще ссылки по теме:

опп класс и массив (создать массив указателей по выборке животных, участвующих в забеге) C++
C++ Абстрактный класс
Абстрактный класс/Класс интерфейс C++

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

Или воспользуйтесь поиском по форуму:
StasGamilton
Эксперт по пяченькам
 Аватар для 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*
Верно
Yandex
Объявления
28.02.2013, 17:29     абстрактный класс и массив указателей
Ответ Создать тему
Опции темы

Текущее время: 16:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru