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

Не создается указатель из-за базового класса с конструктором - C++

Восстановить пароль Регистрация
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
19.06.2014, 05:49     Не создается указатель из-за базового класса с конструктором #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Cbase
{
    public:
        virtual void Start( );
 
        int iGlobal;
 
        Cbase( int num )
        {
            iGlobal = num ;
        }
};
 
class COther : public Cbase
{
    public:
        void Start( );
 
        //COther() : Cbase( 0 ){ }
};
Создаю указатель:

C++
1
2
3
4
5
Cbase* pbase[] = 
{ 
    new Cbase( 0 ), 
    new COther 
};
На new COther, говорит:


error C2512: COther: нет подходящего конструктора по умолчанию

Если раскоментить строку //COther() : Cbase( 0 ){ } то всё окей.

Но это я в гугле нашел решение. Объясните, что не так и верное ли исправление.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 05:49     Не создается указатель из-за базового класса с конструктором
Посмотрите здесь:

C++ Член класса, создаваемый конструктором с параметром
Вызов метода базового класса из класса-потомка C++
C++ Ошибка инициализации объекта, конструктором класса
C++ Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Вызов конструктора базового класса из класса-наследника C++
Не создается указатель на класс внутри класса C++
Создание полиморфного объекта, зачем создавать указатель на объект базового класса? C++
Конструирование дочерних классов из базового с private конструктором C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
19.06.2014, 06:16     Не создается указатель из-за базового класса с конструктором #2
Ну правильно COther у тебя не имеет конструктора.
Конструктор родителя имеет вид Cbase( int num ), что тоже не подходит, так как ты инициализируешь класс без параметров.
C++
1
COther() : Cbase( 0 ){ }
сообщает, что конструктор COther это конструктор Cbase( 0 ), поэтому все работает.
Можешь просто создать конструктор в COther() и тоже будет работать, весь вопрос в том, для чего это тебе надо, и как ты эти классы собираешься использовать в дальнейшем.
Yandex
Объявления
19.06.2014, 06:16     Не создается указатель из-за базового класса с конструктором
Ответ Создать тему
Опции темы

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