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

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

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

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

28.02.2013, 16:41. Просмотров 1257. Ответов 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]; //- причем статический массив создать можно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 16:41     абстрактный класс и массив указателей
Посмотрите здесь:
C++ Вектор указателей на абстрактный класс?
C++ Сортировка массива указателей на абстрактный базовый класс
опп класс и массив (создать массив указателей по выборке животных, участвующих в забеге) C++
массив указателей на базовый класс C++
C++ Как передать в функцию двумерный массив указателей на класс?
C++ по поводу указателей. Как правильно задавать массив указателей и его удалять?
"динамически выделяет массив указателей на базовый класс" - как это понять? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт по пяченькам
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++ Как создать класс со вложенной структурой указателей на класс?
Массив из указателей на масив из указателей на массив из int) C++
Абстрактный класс/Класс интерфейс C++
C++ абстрактный класс

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

Или воспользуйтесь поиском по форуму:
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     абстрактный класс и массив указателей
Ответ Создать тему
Опции темы

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