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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Передача звука, приём http://www.cyberforum.ru/cpp-beginners/thread923235.html
Доброго времени суток. Вот задумал создать, что то на подобии голосового чата, но вот нет навыков в данной сфере. Может, кто то уже делал что то подобное, если можно подскажите.
C++ push_back vs emplace_back собственно тема обсуждалась там, я сделал вывод, что надо использовать emplace_back теперь, вроде как эффективнее местами. Одно визуальное изуальное отличие я уже нашёл // list::emplace_back #include <iostream> #include <list> int main () { std::list< std::pair<int,char> > mylist,mylist1; mylist.emplace_back(10,'a'); http://www.cyberforum.ru/cpp-beginners/thread923233.html
C++ oseq
Здорова! Есть задачка: "Дополнительно к iseq() определите oseq(). Выходная последовательность, которая задается как аргумент oseq(), должна замещаться выходной последовательностью использующего oseq() алгоритма. Определите подходящий набор перегрузок для по крайней мере трех стандартных алгоритмов по вашему выбору." Нифига не пойму как ее делать и вообще что, то я не припомню таких...
Неверное значение числа после операций над ним C++
Всем привет. Прошу помощи! Я использую g++ компилятор. Итак, проблема: После того, как я умножаю вещественное число типа float, например 0.123, на 10000000, должно получится 1230000, но у меня почему-то получается 1230001! В чем подвох? Объясните пожалуйста.
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, чередуя белые и красные квадраты". Вот отрывок кода (здесь магические константы, но это подождет, пока я не разберусь с проблемой) int main() try { Point tl(100,100); Simple_window win(tl,600,400,"Canvas"); подробнее

Показать сообщение отдельно
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76
15.07.2013, 09:12     Замена виртуальных функций шаблонами
Такая задача - нужно заменить виртуальные функции шаблонами. Можно сделать так:
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
Можно ли эту проблему решить, или в данном случае от виртуальщины никак не избавиться?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru