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

Полиморфные функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
14.11.2012, 17:03     Полиморфные функции #1
Всем привет, случалась такая проблема. Есть абстрактный класс
C++
1
2
3
class Abstract{ //Абстрактный класс
public:virtual void print_msg()=0;
};
нужно создать полиморфнуу функцию операндом которой будет абстрактный класс,у меня не получаеться..помогите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 17:03     Полиморфные функции
Посмотрите здесь:

C++ Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции
Одномерный массив и функции (сделать 3 функции ввода/решения/вывода) C++
C++ Табулирование заданной функции и определение максимального и минимального значения функции в таблице
Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции C++
Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11849 / 6828 / 773
Регистрация: 27.09.2012
Сообщений: 16,930
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 17:20     Полиморфные функции #2
C++
1
2
3
int foo(Abstract *p){
    return 0;
}
Или я не так понял?
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
14.11.2012, 17:21  [ТС]     Полиморфные функции #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
int foo(Abstract *p){
    return 0;
}
Или я не так понял?
Понял хорошо, ну нужно что б хоть что то делалось в этой функции..
и как вызвать эту функцию?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11849 / 6828 / 773
Регистрация: 27.09.2012
Сообщений: 16,930
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 17:25     Полиморфные функции #4
Цитата Сообщение от Костя Хута Посмотреть сообщение
Понял хорошо, ну нужно что б хоть что то делалось в этой функции..
и как вызвать эту функцию?
Вообще то Вам как минимум нужен еще один класс, ибо создать объект абстрактного класса нельзя.
Делайте класс, наследуйте его от Abstract (NewClass->Abstract). Сделайте в нем реализацию метода print_msg(). Создайте объект этого класса и передавайте в функцию указатель на этот объект. В функции же вызывайте метод print_msg();
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
14.11.2012, 17:42  [ТС]     Полиморфные функции #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Вообще то Вам как минимум нужен еще один класс, ибо создать объект абстрактного класса нельзя.
Делайте класс, наследуйте его от Abstract (NewClass->Abstract). Сделайте в нем реализацию метода print_msg(). Создайте объект этого класса и передавайте в функцию указатель на этот объект. В функции же вызывайте метод print_msg();

class Abstract{ //Абстрактный класс
public:virtual void print_msg()=0;
};

class Planet : public Abstract{
void print_msg(){//реалізація віртуальної функціїї в класі
cout<<" Virtual'na fynkciya";
}
}

int main()
{


}


теперь нужно создать полиморфную функцию, аргументом которой будет класс Абстракт..и нужно еще вызвать ее из меина наверное
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11849 / 6828 / 773
Регистрация: 27.09.2012
Сообщений: 16,930
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 19:43     Полиморфные функции #6
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
#include <iostream>
using namespace std;
class Abstract{ //Абстрактный класс
public:virtual void print_msg()=0;
};
 
class Planet : public Abstract{
    void print_msg(){//реалізація віртуальної функціїї в класі
        cout<<"\tClass Planet\n";
    }
};
class Meteor : public Abstract{
    void print_msg(){//реалізація віртуальної функціїї в класі
        cout<<"\tClass Meteor\n";
    }
};
 
void foo(Abstract *p){
    p->print_msg();
}
 
int main()
{
    Meteor m;
    Planet p;
    foo(&p);
    foo(&m);
    cin.get();
}
Yandex
Объявления
14.11.2012, 19:43     Полиморфные функции
Ответ Создать тему
Опции темы

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