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

Классы и сабклассы - C++

Восстановить пароль Регистрация
 
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
08.02.2011, 09:37     Классы и сабклассы #1
класс и сабклассы
чё-то я запутался, и не знаю как это сделать,
допустим у меня класс и 2 сабкласса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CMyClass
{
        public:
        int x;
};
 
CMySubClass1:public CMyClass
{
public:
        void Init()
        {
                x = 1;
        }
};
 
CMySubClass2:public CMyClass
{
public:
        void Init()
        {
                x = 2;
        }
};
делаю вот так, объявляю объекты:
CMySubClass1 sub1;
CMySubClass2 sub2;
массив:
CMyClass array[] = {sub1, sub2};
потом хочу вызвать функцию Init(), но там её попросту нет, очевидно потому, что массив создан CMyClass, а там эта функция не объявлена. Ну вот надо как-то сделать что бы из массива можно было вызвать эту функцию, при этом у sub1 x должен = 1, у sub2 x = 2 и т.д., кто может помочь?
PS удалите плиз эту тему
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2011, 09:37     Классы и сабклассы
Посмотрите здесь:

C++ Классы на с++
C++ Классы
Классы в c++ C++
C++ Классы
классы с++ C++
Классы C++
C++ классы с++
C++ Классы в С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
08.02.2011, 10:17     Классы и сабклассы #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
`
class CMyClass
{
public:
    int x;
    virtual void Init() = 0; 
}; 
 
class CMySubClass1:public CMyClass
{
public:
    void Init()
    {
        x = 1; 
    }
}; 
 
class CMySubClass2:public CMyClass
{
public:
    void Init()
    {
        x = 2; 
    }
}; 
 
int main(int argc, char *argv[])
{
    CMySubClass1 sub1; 
    CMySubClass2 sub2; 
    CMyClass *array[] = {&sub1,  &sub2};
    for(int i=0; i<2; ++i)
    {
        array[i]->Init();
        std::cout << array[i]->x << std::endl; 
    }
}
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
09.02.2011, 08:56  [ТС]     Классы и сабклассы #3
немного ошибся, а как в таком случае теперь вызвать конструктор мэйн класса?
C++
1
2
3
4
5
6
7
8
9
10
class CMyClass
{
public:
    int x;
    virtual void Init() = 0; 
 
   CMyCLass()
   {
   }
};
а то создание объекта мэйн класса приводит к таким ошибкам
Код
error C2259: 'CMyClass' : cannot instantiate abstract class due to following members:
see declaration of 'CMyClass'
warning C4259: 'void __thiscall CMyClass::Init(void)' : pure virtual function was not defined
see declaration of 'Init'
всё, разобрался, даже не надо никаких объектов мэйн класса создавать что бы вызвать его конструктор
Yandex
Объявления
09.02.2011, 08:56     Классы и сабклассы
Ответ Создать тему
Опции темы

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