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

Перегрузка операции присвания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка строк http://www.cyberforum.ru/cpp-beginners/thread1011602.html
Есть программа. Нужно в calc правильно сортировку написать что бы результаты в алфавитном порядке выбивало. #include <iostream> using namespace std; struct warehouse { char *name; int number, prise, date; };
C++ При нажатии на кнопку остальные не доступны Есть форма в Visual C++. В форме несколько кнопок Button и CheckBox, нужно чтобы при нажатии на CheckBox остальные кнопки становились недоступными. Кто может помочь напишите. http://www.cyberforum.ru/cpp-beginners/thread1011594.html
C++ Написать код расстановки скобок
Здравствуйте!!!Помогите пожалуйста написать ко расстановки скобок! Задание такое: 1.Написать программу, которая расставляет всевозможными способами скобки в выражении так, что выражение становится формулой или выдает сообщение об ошибке, если в выражении встречаются недопустимые сочетания (подряд идут несколько переменных или несколько бинарных связок). Реализовать программу с использованием...
Трудности с шаблоном complex C++
не силен в ооп, часть лабораторной сделал, а на второй застопорился нужно чтобы при нажатии на кнопку "выполнить" находилось произведение модулей элементов с отрицательной действительной частью для решения как я понимаю надо найти отрицательные действительные эл-т(ы) скорее всего через условие, если условие выполняется то произвести умножение, но вот как это записать кодом незнаю, помогите...
C++ Использование функций http://www.cyberforum.ru/cpp-beginners/thread1011562.html
Вечер добрый. Задание: Вывести на экран таблицу значений функции Y(x)=(3.14*(3.14-2*|x|))/8 и ее разложения в ряд S(x)= cos x / 1 + cos 3x / 9 + ... + cos(2k-1)x/(2k-1)^2 с точностью e=10^-4. Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций. Нужна оценка кода, верный ли он: #include <iostream.h> #include <math.h> ...
C++ не компилирует, в чем ошибка? Ребята, помогите! В DEV-C++ не компилирует, в чем ошибка? (в С++ работаю недавно) #include <windows.h> #include <iostream> #include <stdio.h> using std::cout; using std::cin; using std::endl; подробнее

Показать сообщение отдельно
Bretbas
191 / 50 / 7
Регистрация: 05.08.2013
Сообщений: 827
Завершенные тесты: 1

Перегрузка операции присвания - C++

19.11.2013, 02:05. Просмотров 235. Ответов 6
Метки (Все метки)

Всем доброго здравия,Господа!У меня возникла проблема с перегрузкой операции присваивания(=) и я надеюсь Вы мне поможете)
Итак....
Есть класс...ммм....к примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass
{
private:
int data;
public:
MyClass()
{}
MyClass& operator = (int n)
{
data=n;
return *this;
}
};
Собственно все работает и я могу вполне воспользоваться перегруженным оператором присваивания.К примеру вот так:
C++
1
2
MyClass k;
k=5;
Все будет работать)Но есть одна загвозка...он работает только по аналогии: "объект=значение",а в противоположном направлении "переменная=объект"(Объект уже с правой стороны) работать не будет,что и правильно.Для этого мне нужно создать дружественный метод по отношению к классу,то есть вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass
{
private
int data;
public:
MyClass(int p) : data(p)
{}
friend int& operator = (MyClass n);
};
int& operator = (MyClass n)
{
return n.data;
}
Вот так я могу уже присваивать вот так:
C++
1
2
3
MyClass k(5);
int a;
a=k;
Тоесть объект уже справа!
Теперь собственно вопрос:
Как объединить эти два метода,чтобы присваивание работало и в том,и в другом направлении "объект=значение"(объект слева) и "переменная=объект"(объект справа)?Написать эти два метода в одном и том же классе не получается,т.к они имеют одинаковое имя operator =
Так как же?Помогите пожалуйта!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru