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

создать метод доступа к функциям класса-наследника - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение и запись текстового файла http://www.cyberforum.ru/cpp-beginners/thread371099.html
Проблема в том, что написала самый обычный, самый стандартный код для чтения и записи текстового файла. Во-первых он всегда мне пишет "Can't open the file!". #include <iostream> #include <fstream> using namespace std; int main() { ofstream out("D:\test.txt"); if(!out) {
C++ задачка с++ #include <iostream> using namespace std; int main() { int a;int i,j,z,y; cout<<"vvedite el-tu massiva:"; for(j=0;j<5;j++) { http://www.cyberforum.ru/cpp-beginners/thread371096.html
C++ Стек (класс)
Решил переделать эту программу, используя для определения стека не структуру, а класс#include <iostream> using namespace std; struct node{ char d; node *p; }; node *first(char d); void push(node **top, char d); char pop(node **top);
Как представить на яыке с++ образуют ли ребра графа цикл или нет ? C++
void Graf::Algoritm() { Graf t = Graf(true); bool flag = false; Rib temp;Rib temp2;temp.Length = 999;temp2.Length = 999; for(int i =0;i<cnt;i++) { for(int j =0;j<cnt;j++) {
C++ Вычисление составной функции http://www.cyberforum.ru/cpp-beginners/thread371070.html
Составьте программу для вычисления составной функции: f(x) может принимать одно из двух значений (e в степени x, или x в квадрате(в степени 2)) по выбору пользователя. Результат получите в виде: x = ... i =... f(x)= e =...
C++ Инициализация модуля Привет! Когда я программировал в Delphi, там у каждого модуля могла быть секция initialization. Так вот, есть ли что-то подобное в C++. То есть можно ли назначить функцию в модуле, чтобы при загрузке программы с подключенным этим модулем она выполнялась автоматически. подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,898
Завершенные тесты: 1
23.10.2011, 15:08     создать метод доступа к функциям класса-наследника
Правильность или неправильность определяется чисто практическими вопросами. "Неправильность" такого подхода - геморрой с добавлением новых потомков.
Но раз приспичило - то где-то так:
C++
1
2
3
4
5
6
7
8
class Triangle;
class Rectangle;
class Figure
{
public:
    Triangle& ToTriangle() {return *dynamic_cast<Triangle*>(this);}
    Rectangle& ToRectangle() {return *dynamic_cast<Rectangle*>(this);}
};
Это простейший способ, по-хорошему надо проверять результат dynamic_cast и выбрасывать исключения в случае ошибки. Ну и разумеется, наследовать Triangle и Rectangle от Figure, плюс желательно в потомках скрывать преобразования.
 
Текущее время: 23:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru