Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Penelent
Заблокирован
#1

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

01.10.2015, 20:43. Просмотров 205. Ответов 5
Метки нет (Все метки)

что я не правильно делаю? у меня входит в бесконечную рекурсию на операторе присвоения
http://www.cyberforum.ru/cpp-beginners/thread1003586.html
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
template <typename T>
class A
{
public:
    A()
    {
    }
 
    A(const A &a)
    {
    }
 
    A& operator=(const A &a)
    {
        return *this = A<T>(a);
    }
};
 
int main()
{
    A<int> a;
    A<int> b;
    a = b;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2015, 20:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шаблоны и оператор присвоения (C++):

Оператор присвоения в бинарном дереве
Не смог разобраться. Прокомментируйте, будьте добры. Задание такое, определите...

Оператор присвоения для класса
Никак не получается написать оператор присвоения. Помогите пожалуйста!...

Конструктор перемещения и оператор присвоения для двусвязного списка
Добрый день. Помогите разобраться в вопросом: пишу реализацию двусвязного...

Оператор присвоения копии для класса, действующего как значения
Приветсвую. Увидел в книге Липпмана, &quot;Язык программирования С++. Базовый...

Создать класс Str (символьная строка). Переопределить оператор присвоения.
Помогите решить с обяснениями. Создать класс Str (символьная строка)....

5
zss
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,179
Завершенные тесты: 1
01.10.2015, 20:46 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <typename T>
class A
{
  T x;
public:
    A()
    {
       x=0;
    }
 
    A(const A &a)
    {
       x=a.x;
    }
 
    A& operator=(const A &a)
    {
        if(this!= &a )
           x=a.x;
        return *this;
    }
};
0
Penelent
Заблокирован
01.10.2015, 20:48  [ТС] #3
zss, а то бишь просто скопировать все прямо в операторе? я просто думал не переписывать один и тот же код (в копирующем конструкторе и операторе присвоения)
0
hoggy
Заблокирован
01.10.2015, 21:26 #4
Цитата Сообщение от Penelent Посмотреть сообщение
A& operator=(const A &a)
* * {
* * * * return *this = A<T>(a);
* * }
конструкция:
C++
1
*this = A<T>(a);
запускает
C++
1
A& operator=(const A &a)
получается рекурсия.

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
template <typename T>
class A
{
    int x;
public:
    A():x(){}
    
    
    A(const A& a)
        :x()
    {  operator=(a); }
 
    const A& operator=(const A& a)
    {
        if(this!=&a)
            x = a.x;
        return *this;
    }
};
 
int main()
{
    A<int> a;
    A<int> b;
    a = b;
}
0
zss
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,179
Завершенные тесты: 1
01.10.2015, 21:29 #5
hoggy, А зачем в Вашей конструкции шаблон, если код от него не зависит?
0
hoggy
Заблокирован
01.10.2015, 21:40 #6
Цитата Сообщение от zss Посмотреть сообщение
А зачем в Вашей конструкции шаблон, если код от него не зависит?
ни зачем. продукт копипасты.
можно вообще убрать шаблон.
проблема ТС все равно никак с шаблонами не связанна.
0
01.10.2015, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2015, 21:40
Привет! Вот еще темы с решениями:

Шаблоны и оператор вывода
template &lt;class Xtype, int n, int m&gt; class Mtype { Xtype M; public:...

Шаблоны класса:Матрица. Ошибка бинарный "=": не найден оператор, принимающий правый операнд типа "Matr<T>"
Выдает ошибку &quot;бинарный &quot;=&quot;: не найден оператор, принимающий правый операнд...

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Есть ли разница в...

Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис)
Так как изучаю эту книгу, то в некоторых местах возникают вопросы. Чтобы не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru