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

Функциональные шаблоны и наследование - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Идентификатор не найден http://www.cyberforum.ru/cpp-beginners/thread903550.html
#include "StdAfx.h" #include "iostream" // для cin и cout //#include "conio.h" // для getch #include "cmath" // для выполнения мат. вычислений //#include "locale.h" // для printf и setlocale #define afirst -0.5 #define asecond 1.9 #define bfirst 1.5
C++ Пример с учебника Дэвиса. Необьявленный идендификатор Всем доброго времени суток! В книжке такой пример: // BitTest — инициируются две переменные и // выводятся результаты выполнения // операторов ~,&,| и ^ #include <stdio.h> #include <iostream> using namespace std; int main(int nArq, char* pszArgs) { http://www.cyberforum.ru/cpp-beginners/thread903542.html
Дан линейный вещественный массив а. Найти C++
Дан линейный вещественный массив а. Найти a*x+a*x^2+..+a*x^n. (х дано).
C++ Определить максимальное количество подряд идущих положительных элементов массива, не прерываемых ни нулями, ни отрицательными элементами
помогите с этой задачей)) Дан линейный вещественный массив a1,a2,..,an. Определить максимальное количество подряд идущих положительных элементов массива, не прерываемых ни нулями, ни отрицательными элементами, вывести на экран указанную последовательность элементов. если что у меня есть такая программа на паскале.
C++ Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек http://www.cyberforum.ru/cpp-beginners/thread903524.html
Помогите пожалуйста исправить ошибки условие Написать функцию (или макроопределение), которая находит длину стороны по координатам его точек.. Написать функцию square, которая вычисляет площадь треугольника, заданного координатами вершин. Написать функцию squaren c переменным числом параметров, которая определяет площадь выпуклого многоугольника, заданного координатами своих вершин. код...
C++ Собственный класс итератора Добрый день! Пишу сейчас одну библиотеку (не использующею STL и другие библиотеки) и для контейнеров решил написать класс итератора: /// Представляет поэлементный доступ к элементам коллекции /// @param T - тип элементов коллекции template<typename T> class Iterator { public: typedef T* pointer; //!< Указатель на значение typedef T reference; //!< Ccылка на значение подробнее

Показать сообщение отдельно
vasya-gaykin
Сообщений: n/a

Функциональные шаблоны и наследование - C++

16.06.2013, 17:29. Просмотров 450. Ответов 4
Метки (Все метки)

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
30
31
32
33
34
35
36
37
38
#include <list>
 
using namespace std;
 
class A {
    public:
        virtual void doit() =0;
};
 
 
class B: public A {
    public:
        virtual void doit() {};
};
 
 
// чтобы списки можно было заполнять как в Qt:
// list<int> L;
// L << 10 << 20 << 30
template<class T> list<T>& operator<<(list<T>& list, T value) {
    list.push_back(value);
    return list;
}
 
// Специализируем шаблон для случая list<Указатель>
template<class T> list<T*>& operator<<(list<T*>& list, T* value) {
    list.push_back(value);
    return list;
}
 
int main(int argc, char* argv[]) {
    list<A*> alist;
    B* b = new B();
    alist.push_back(b); // OK
    alist << b; // error
 
    return 0;
}
Данный код не компилится, и затыкается на строчке 35. Но если в шаблон внести небольшое изменение то все
проходит на ура. Изменение следующее:
строчку 26 привести к следующему виду
C++
1
template<class T> list<T*>& operator<<(list<T*>& list, A* value)
(измениля второй параметр в сигнатуре функции)

Такое положение кажется странным. У Страуструпа в "Язык программирования С++ Специальное издание" в
главе "Специализация" (стр.: 420) имеем:

C++
1
2
3
template<class T> class Vector;    // общий шаблон
template<> class Vector<T*>;       // специализация для любых указателей
template<> class Vector<void*>;    // специализация для void*
Второй пример, кажется, это как раз по теме моего вопроса. Но почему-то не срабатывает...
Компилятор: gcc версия 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru