![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 20.09.2013
Сообщений: 3
|
![]()
Здравствуйте. Задание: перегрузить оператор вычитания двух комплексных чисел с использованием классов.
Ход .cpp: Код:
Код:
7 IntelliSense: class "ComplexZ" не содержит члена "operator-" h:\ООП\Лаба 2\WindowsFormsApplication1\WindowsF ormsApplication1\ComplexZ.cpp 22 8 IntelliSense: член "ComplexZ::Re" (объявлено в строке 16 из "h:\ооп\лаба 2\windowsformsapplication1\windowsf ormsapplication1\ComplexZ.h") недоступно h:\ООП\Лаба 2\WindowsFormsApplication1\WindowsF ormsApplication1\ComplexZ.cpp 25 9 IntelliSense: член "ComplexZ::Re" (объявлено в строке 16 из "h:\ооп\лаба 2\windowsformsapplication1\windowsf ormsapplication1\ComplexZ.h") недоступно h:\ООП\Лаба 2\WindowsFormsApplication1\WindowsF ormsApplication1\ComplexZ.cpp 25 10 IntelliSense: член "ComplexZ::Im" (объявлено в строке 17 из "h:\ооп\лаба 2\windowsformsapplication1\windowsf ormsapplication1\ComplexZ.h") недоступно h:\ООП\Лаба 2\WindowsFormsApplication1\WindowsF ormsApplication1\ComplexZ.cpp 26 11 IntelliSense: член "ComplexZ::Im" (объявлено в строке 17 из "h:\ооп\лаба 2\windowsformsapplication1\windowsf ormsapplication1\ComplexZ.h") недоступно h:\ООП\Лаба 2\WindowsFormsApplication1\WindowsF ormsApplication1\ComplexZ.cpp 26 Не могу понять, почему компилятор не видит скрытые члены класса, хотя функция объявлена как дружественная... Объясните, пожалуйста. Последний раз редактировалось Lingri; 20.09.2013 в 20:28. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
А так?
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 20.09.2013 в 20:36. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 20.09.2013
Сообщений: 3
|
![]()
О, сработало.
Можете объяснить, почему используем адреса и не пишем ComplexZ :: operator... ? |
![]() |
![]() |
![]() |
#4 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
если оператор дружественный - то он не метод класса:
Код:
"Адреса используем" чтобы не копировать объект лишний раз. Я бы еще эту часть выпилил: Код:
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 20.09.2013
Сообщений: 3
|
![]()
Секунду, как метод не может принимать 2 аргумента?
И почему используются адреса передаваемых аргументов? |
![]() |
![]() |
![]() |
#6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
К прочтению - http://habrahabr.ru/post/132014/.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#7 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
Lingri
нада ты пишешь a - b то выполняется оператор - объекта "a". Объект "b" будет аргументом (это бинарный оператор). может быть унарный оператор -a (тут выполняется оператор объекта "a" без параметров). Т.е. оператор - может принимать 0 или 1 аргумент. Все остальное трудно представить для бинарного/унарного оператора, по определению). С другой стороны плюсы позволяют тебе объявить дружественную функцию (не метод), не принадлежащую ни одному объекту, которая будет принимать 2 аргумента назовешь ты ее T& minus(T&, T&) или T& operator-(T&, T&) разницы особой нет (ну в первом случае использовать менее удобно, МБ). В этом случае в выражении a-b может использоваться такая функция, а "а" и "б" будут ее аргументами. По ссылкам я уже написал. Но ты можешь открыть первые страницы любого учебника по С++(или даже Си). Всякие классы и операторы тут не причем. При передаче объекта по значению создается копия. Можешь поэкспериментировать. Допиши конструктор копирования и заставь его выводить что-нибудь в консоль при выполнении. Запусти программу со ссылками и без, и посмотри сколько раз выполнится твой конструктор в каждом из случаев. Но и в книжку заглянуть не поленись. Последний раз редактировалось rrrFer; 20.09.2013 в 21:27. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Классы, перегрузка операторов. | Dimasanius | Общие вопросы C/C++ | 5 | 08.05.2014 02:13 |
Дружественные функции и классы | Opiym | Помощь студентам | 1 | 05.04.2010 21:51 |
Классы ны С++, перегрузка функций,операторов | Shturmovik | Помощь студентам | 1 | 04.06.2009 22:58 |
Задача на классы, перегрузка операторов [C++] | Roomper | Помощь студентам | 13 | 30.05.2009 08:36 |
Перегрузка операторов, Организация перегрузки операторов | chagin_yav | Помощь студентам | 2 | 12.05.2008 09:15 |