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

шаблоны оператор присваивания - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ заголовочные файлы в с++ http://www.cyberforum.ru/cpp-beginners/thread331896.html
я вот не могу понять, их обязательно делать в своих программах? В том смысле, что бы код был, так сказать "правильным, хорошим". Хотел спросить сразу на примере, стоит ли тут часть кода выносить в заголовочный файл: #include <iostream> #include <string> #include <sstream> #include <algorithm> #include <iterator> #include <vector> using namespace std;
C++ рекурсия Помогите,пожалуйста, изменить рекурсивную ф-цию.сразу прошу не пугаться размера программы, весь код привожу для возможности отладки, проблема у меня в функции FindEmptyPointer. из-за нее дерево строится в виде, изображенном на рисунках (на клеточке - нижний рисунок и первый рисунок отображают как есть) а необходимо, как на верхнем, тоесть добавлять узлы в один список, пока тот не закончится,... http://www.cyberforum.ru/cpp-beginners/thread331893.html
Урок \n C++
Помогите что, не так с кодом вот (описание ошибки снизу)... // Эта программа демонстрирует \n последовательность.cpp: главный файл проекта. // которая обеспечивает переход на новую строку. #include "stdafx.h" #include <iostream> setlocale(LC_CTYPE, "Russian"); using namespace std;
C++ поиск разрядов в двухбайтовых словах
Дан файл состоящий из двубайтовых слов,количество слов=4096(или он равен 8192 байта) C начало(начиная с первого слова) надо искать в 14 разряде еденицу(перебирая слова по очереди)как только еденица-стоп, затем с этого слова ищем 1-цу в 16 разряде также перебирая слова и ведём подсчёт этих слов одновременно, как только 1-ца в 16 разряде-стоп. Заранее благадарю Дублирование тем запрещено...
C++ Найти количество содержащихся в массиве серий http://www.cyberforum.ru/cpp-beginners/thread331868.html
Помогите реше-ить задачу. Очень срочно надо. Буду благодарен. Задача: Дан файл целых чисел. Найти количество содержащихся в нем серий (то есть наборов последовательно расположенных одинаковых элементов). Например, для файла с элементами 1, 5, 5, 5, 4, 4, 5 результат равен 4.
C++ Программа по нахождению площади квадрата Я только начал изучать этот язык вот так накидал простенькую программу но не работает подчеркивает слово stream, можите подправить чтоб работала #include<stream.h> main(); { float a,b,c; cout << "vvedite hirinu i dlinu \n"; cin>> a,b; c=a*b; cout <<"plohad ravna ",<< c;} подробнее

Показать сообщение отдельно
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
11.07.2011, 17:36     шаблоны оператор присваивания
здраствуйте! надо по заданию накатать стек с таким оператором присваивания, чтобы можно было приравнивать стеки разных типов, если конечно преобразование возможно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template <typename T, typename C = std::vector<T> >
class stack
{
    C elems;
public:
    T       top() const;
    void    pop();
    void    push(T const&);
    size_t  size() const;
    bool    empty() const;
 
    template <typename T2>
            stack<T, C>&  operator=(stack<T2, C> const&);
 
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <typename T, typename C>
        template <typename T2> 
                stack<T, C>& stack<T, C>::operator =(stack<T2, C> const& rhv)
{
    if ((void*)this == (void*)&rhv)
        return *this;
 
    stack<T2, C> temp(rhv);
 
    elems.clear();
 
    while (!temp.empty())
    {
        elems.push_front(temp.top());
        temp.pop();
    }
 
    return *this;
}
пытался я приравнять stack<int> = stack<double> например, но пишет:
/home/alex/stack1/main.cpp:15: ошибка: no match for ‘operator=’ in ‘stk = stk2’
/home/alex/stack1/stack.h:9: замечание: претенденты: stack<int, std::vector<int, std::allocator<int> > >& stack<int, std::vector<int, std::allocator<int> > >::operator=(const stack<int, std::vector<int, std::allocator<int> > >&)
нашёл он мой оператор, а чё пользоваться им не хочет не могу понять?

Добавлено через 2 минуты
а кажется понял ошибку, тогда ещё с C понты будут

Добавлено через 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
template <typename T, typename C = std::deque<T> >
class stack
{
    C elems;
public:
    T       top() const;
    void    pop();
    void    push(T const&);
    size_t  size() const;
    bool    empty() const;
 
    template <typename T2, typename C2>
            stack<T, C>&  operator=(stack<T2, C2> const&);
 
};
 
template <typename T, typename C>
        template <typename T2, typename C2>
            stack<T, C>& stack<T, C>::operator =(stack<T2, C2> const& rhv)
{
    if ((void*)this == (void*)&rhv)
        return *this;
 
    stack<T2, C2> temp(rhv);
 
    elems.clear();
 
    while (!temp.empty())
    {
        elems.push_front(temp.top());
        temp.pop();
    }
 
    return *this;
}
час ошибку искал, а как сюда выложил, так сразу и нашёл почему то
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru