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

Доступ к методам производного класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Считывание из текстового файла http://www.cyberforum.ru/cpp-beginners/thread697203.html
Нужно модифицировать программу. Чтобы пользователь вводил текст НЕ в диалоговом окне, а текст был записан в *. ТХТ файле, откуда программ его считывала, и возвращала после работы программы. ...
C++ Вычислить значения, пользуясь конечно-разностным соотношением Нужна помощь. Вычислить значения {d}^{2}u /{dy}^{2} пользуясь конечно-разностным соотношением, построенным на вертикальном трехточечном шаблоне, x \epsilon y \epsilon , u(x,y) = {x}^{3} y... http://www.cyberforum.ru/cpp-beginners/thread697197.html
C++ Как правильно использовать Указатели для массива (ошибки в программе)?
Необходимо переписать программу правильно, чтобы использовались указатели. Помогите, пожалуйста!!! Примерный (с ошибками код): #include <stdio.h> #include <iostream>
C++ Начинающии программмист
Всем здрасти..)), я начинающий программист, не знаю с чего начать вообще программировать, какую лучше литературу читать, и какие использовать программы для писания программ, по рекомендуйте...
C++ Вывести те элементы в наборе, которые меньше своего левого соседа http://www.cyberforum.ru/cpp-beginners/thread697118.html
Дано целое число N (> 1) и набор из N целых чисел. Вывести те эле- менты в наборе, которые меньше своего левого соседа, и количество K та- ких элементов.
C++ Определить число, встречающееся один раз Помогите пожалуйста понять, что не так в коде...работает код, но неправильно...Задание следующее: ================================================================================ В первой входной... подробнее

Показать сообщение отдельно
hdnn
12 / 12 / 3
Регистрация: 14.11.2012
Сообщений: 51
Завершенные тесты: 1

Доступ к методам производного класса - C++

14.11.2012, 11:03. Просмотров 1081. Ответов 5
Метки (Все метки)

Есть базовый класс CJobGeneral. В нём описано несколько методов.
Есть унаследованный от него CJobCitomir с рядом своих методов.
Есть третий класс CGenPjct, в котором объявляется переменная класса CJobGeneral:
C++
1
static CJobGeneral* m_Job;
В классе CGenPjct есть функция, которая должна присвоить переменной m_Job объект либо класса CJobGeneral, либо CJobCitomir, в зависимости от переданного ей параметра:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int CGenPjct::Start(int typeOfProject/*=0*/)
{
    ...
 
    switch (typeOfProject)
    {
    case 0:
        m_Job = new CJobGeneral("JobCitomir.dll");
        break;
    case 1:
        m_Job =new CJobCitomir("JobCitomir.dll");
        break;
    default:
        m_Job = new CJobGeneral("JobCitomir.dll");
    }
 
    ...
 
    return 0;
}
Далее, в зависимости от приложения, которое будет использовать класс CGenPjct и передавать в метод Start свой идентификатор, по идее должны быть доступны те или иные методы в переменной m_Job.
Но косяк в том, что, эта часть:
C++
1
2
    case 1:
        m_Job =new CJobCitomir("JobCitomir.dll");
Позволяет использовать лишь методы базового класса, а методы производного не видит(error C2039: 'CreateNewScan' : is not a member of 'CJobGeneral')
.
Временно решил проблему путём описания в базовом классе методов производного как virtual:
C++
1
2
3
    virtual int CreateNewScan(){}
    virtual int ResetScan(){}
    virtual int PlayPauseScan(BOOL flag){}
Но число производных от CJobGeneral классов скоро будет как минимум 5 и у каждого свои методы. И описывать их в базовом, чувствую, что не правильно.

Вот и вопрос: можно ли(и как правильно) присвоить объект производного класса к переменной базового так, чтобы был доступ к методам производного был доступ без их описания как виртуальных в базовом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru