Помогите с реализацией полиморфизма; то ли я плохо читал Страуструпа, то ли я много хочу, но ответа на свой вопрос найти не смог. Мне необходимо, что бы функция f() сама определяла наследника и вызывала соответствующий метод. Как это реализовать, подскажите, пожалуйста?
Спасибо.
================================================
#include <iostream>
#include <string>
using namespace std;
// Базовый класс
class Parent
{
public:
void set();
};
class ChildA : public Parent
{
private:
int data;
public:
void set(const int& tdata) { data = tdata; }
};
class ChildB : public Parent
{
private:
string data;
public:
void set(const string& tdata) { data = tdata; }
};
/*
В зависимости от ``data'' f() должна вызывать соответсвующий метод наследника, например, при f(ChildB o, 10) должен вызываться Q.set(int).
*/
template<class T> void f(Parent& Q, T data)
{
Q.set(data);
}
int main(void)
{
ChildA a;
ChildB b;
f(a, 10);
// f(b, "fff");
return 0;
}
================================================
Ответ на:
комментарий
от krum
Ответ на:
комментарий
от kondor
Ответ на:
комментарий
от kondor
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от vasirck
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от kondor
Ответ на:
комментарий
от kondor
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от dissident
Ответ на:
комментарий
от dissident
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от dissident
Ответ на:
комментарий
от Begemoth
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум boost.asio, boost.serialization (2010)
- Форум Поиогите разобраться с вложенными namespace'ами (2004)
- Форум Валится на throw (2005)
- Форум Logger on C++ ... вроде все правильно ... (2005)
- Форум [C++ такой C++]Шаблонные методы и разделение на .h/.cpp (2010)
- Форум Function template with a template argument. (2013)
- Форум Вопрос по шаблонам функций-членов в С++ (2005)
- Форум Вызвать метод базового класса при разрушении дочернего объекта (2015)
- Форум Шаблоны, почему не работает? (2017)
- Форум С++ и заголовочные файлы (2015)