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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
#1

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

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

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

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

Полиморфные методы - Delphi
Имеется базовый класс TFigures и три потомка от него - TCircle, TRectangle, TTriangle. В TFigures имеется метод LoadFromFile -...

Полиморфные типы - Haskell
Помогите пожалуйста, надо в задачке задать типы, я пока не очнь понимаю эти полиморфы, чуток объяснений, если не трудно. swap :: ...

Полиморфные классы и интерфейсы - C#
Создать перечисления для представления дней недели. Вывести все значения на экран.

Наследование, полиморфные методы - C#
№1 Составить программу с одним родительским классом и двумя потомками. Потомки должны содержать виртуальные функции. Создать виртуальную...

excel. создать таблицу значение кусочно-непрерывной функции y на интервале [xmin; xmax] с шагом h, для расчета функции y используя логические функции - Delphi

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 17:20 #2
C++
1
2
3
int foo(Abstract *p){
    return 0;
}
Или я не так понял?
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;
}
Или я не так понял?
Понял хорошо, ну нужно что б хоть что то делалось в этой функции..
и как вызвать эту функцию?
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 17:25 #4
Цитата Сообщение от Костя Хута Посмотреть сообщение
Понял хорошо, ну нужно что б хоть что то делалось в этой функции..
и как вызвать эту функцию?
Вообще то Вам как минимум нужен еще один класс, ибо создать объект абстрактного класса нельзя.
Делайте класс, наследуйте его от Abstract (NewClass->Abstract). Сделайте в нем реализацию метода print_msg(). Создайте объект этого класса и передавайте в функцию указатель на этот объект. В функции же вызывайте метод print_msg();
0
Костя Хута
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()
{


}


теперь нужно создать полиморфную функцию, аргументом которой будет класс Абстракт..и нужно еще вызвать ее из меина наверное
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,417
Записей в блоге: 3
Завершенные тесты: 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();
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 19:43
Привет! Вот еще темы с ответами:

Для заданной функции f=Sin(2.8*x^2)+sqrt(1.2*x) вывести на экран значения функции - Turbo Pascal
Для заданной функции f=Sin(2.8*x^2)+sqrt(1.2*x) вывести на экран значения функции,которые лежат в пределах от -1 до 2 и соответствующие им...

Используя перегруженные функции и шаблон функции удалить из массива элемент по индексу - C++
Стоит следующая задача: Используя перегруженные функции и шаблон функции удалить из массива элемент по индексу. Функцию написал, но я...

Какое значение возвращают функции (в частности, логические функции) по умолчанию в Лазарус? - Lazarus
Я наткнулся на одну неприятность. До сих пор я считал, что result в функциях по умолчанию равен false (если функция логическая) и 0 (если...

Нестандартный вопрос.Как получить доступ к переменным функции из другой функции? - PHP
&lt;?php declare(ticks=1); function tick_handler() { print_r($_GLOBALS);//Печатает все переменные в области видимости кода вне функции...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.11.2012, 19:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru