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

Замена виртуальных функций шаблонами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача звука, приём http://www.cyberforum.ru/cpp-beginners/thread923235.html
Доброго времени суток. Вот задумал создать, что то на подобии голосового чата, но вот нет навыков в данной сфере. Может, кто то уже делал что то подобное, если можно подскажите.
C++ push_back vs emplace_back собственно тема обсуждалась там, я сделал вывод, что надо использовать emplace_back теперь, вроде как эффективнее местами. Одно визуальное изуальное отличие я уже нашёл // list::emplace_back... http://www.cyberforum.ru/cpp-beginners/thread923233.html
C++ oseq
Здорова! Есть задачка: "Дополнительно к iseq() определите oseq(). Выходная последовательность, которая задается как аргумент oseq(), должна замещаться выходной последовательностью использующего...
Неверное значение числа после операций над ним C++
Всем привет. Прошу помощи! Я использую g++ компилятор. Итак, проблема: После того, как я умножаю вещественное число типа float, например 0.123, на 10000000, должно получится 1230000, но у меня...
C++ Segmentation fault http://www.cyberforum.ru/cpp-beginners/thread923220.html
Здравствуйте. Нужно динамически получить такое: char * a = {"abc", NULL}; Пробую: char ** a; a = new char*; a = new char; ... // put "abc" into a a = new char;
C++ Нарисовать шахматную доску Задание из книги Страуструпа "Принципы и практика использования С++": "Нарисуйте доску для шахмат 8x8, чередуя белые и красные квадраты". Вот отрывок кода (здесь магические константы, но это... подробнее

Показать сообщение отдельно
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76

Замена виртуальных функций шаблонами - C++

15.07.2013, 09:12. Просмотров 500. Ответов 1
Метки (Все метки)

Такая задача - нужно заменить виртуальные функции шаблонами. Можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct Derived1;
struct Derived2;
 
template <typename T>
struct Base
{
    void f();
};
 
template<>
void Base::f<Derived1>(){std::cout<<"Derived1\n";}
 
template<>
void Base::f<Derived2>(){std::cout<<"Derived2\n";}
 
 
struct Derived1 : public Base {};
struct Derived2 : public Base {};
Это работает, но если нужно сделать контейнер/массив указателей на объекты, то уже не получается:
C++
1
2
3
std::vector<Base*> vec;//не получится - нужно указывать параметр для Base
vec.push_back(new Derived1);//Нужна аналогия виртуального полиморфизма
vec[0]->f();//Вызов f() у Derived1
Можно ли эту проблему решить, или в данном случае от виртуальщины никак не избавиться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru