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

Наследование Классов - C++

Восстановить пароль Регистрация
 
Ufo's
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 20:37     Наследование Классов #1
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
class base
{
public:
    int t;
    base(){t=0;};
    ~base(){};
};
class one:public base
{
public:
    one(){t=1;};
    ~one(){};
};
class two:public base
{
public:
    two(){t=2;};
    ~two(){};
    void dwa(){/*...*/}
};
int main(int argc, char *argv[])
{
    base* yk[2];
    yk[0]=new one();
    yk[1]=new two();
    yk[1]->dwa();
    return 0;
}
При компиллировании ругается, что dwa() не является членом класса base.
Возможно ли как-нибудь осуществить такой вызов?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 20:37     Наследование Классов
Посмотрите здесь:

Наследование классов. Копирование производных классов C++
C++ наследование классов
C++ Наследование классов
наследование классов C++
C++ Наследование классов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
28.05.2011, 20:44     Наследование Классов #2
Слова "виртуальная функция" ничего не говорят? Нет?
Ufo's
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 20:55  [ТС]     Наследование Классов #3
Если написать
virtual void dwa(){/*...*/}
ничего не изменится. Или вы имели ввиду создать в классе base виртуальную функцию dwa? уточните пожалуйста, что вы имели ввиду.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
28.05.2011, 21:15     Наследование Классов #4
Да. Именно это я и имел ввиду. В базовом классе создаете чистую виртуальную функцию, а в наследниках ее реализуете. Тогда через указатель базового класса можно вызывать метод наследника.
Ufo's
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 21:40  [ТС]     Наследование Классов #5
А если dwa была бы не функцией, а переменной, и надо было бы ее вызвать так же?
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
28.05.2011, 21:46     Наследование Классов #6
Цитата Сообщение от Ufo's Посмотреть сообщение
А если dwa была бы не функцией, а переменной, и надо было бы ее вызвать так же?
Вы, хотите сказать, поле класса?
Поля класса по принципу инкапсуляции обычно делают приватными. А для доступа? если уж нужен конкретный доступ, делают два метода get()/set().
Ufo's
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 22:35  [ТС]     Наследование Классов #7
а что за методы,можно поподробнее или какое-нибудь название этих методов, чтобы можно было загуглить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2011, 23:28     Наследование Классов
Еще ссылки по теме:

C++ Заменить наследование классов на наследование интерфейсов
C++ Наследование классов
C++ Наследование классов

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

Или воспользуйтесь поиском по форуму:
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
28.05.2011, 23:28     Наследование Классов #8
get() - получить значение поля.
set() - изменить значение поля. Что тут гуглить-то?
Yandex
Объявления
28.05.2011, 23:28     Наследование Классов
Ответ Создать тему
Опции темы

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