Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: псевдонимы(опять этот гемор)
Форум на CrossPlatform.RU > Разработка > С\С++
voipp
объясню ситуацию на пальцах.Значит имеется operator=(classX &X).Мне нужно использовать этот оператор, вот только аргумент его X а не &X.Компилятор выдает ошибку.Что делать и почему в аналогичной ситуации - void func(classX &X), func(X) ошибки не возникает.
BRE
Попробуй так:
operator=(const classX &X)
voipp
спасибо за помощь.А не растолкуете теперь - почему это так?
Влад
Приведи тестовый код и какую ошибку выдает компилятор. Каноническую форму operator=() уже тебе написал коллега BRE.
Iron Bug
Цитата(voipp @ 12.2.2010, 13:02) *
спасибо за помощь.А не растолкуете теперь - почему это так?


а чего тут толковать? операторы по определению имеют ограничения на операнды:

Цитата(Bjarne Stroustrup)
11.2.2 Predefined Meanings for Operators [over.predefined]

Only a few assumptions are made about the meaning of a user-defined operator. In particular,
operator=, operator[], operator(), and operator-> must be nonstatic member functions; this
ensures that their first operands will be lvalues (§4.9.6).


и оператор присвоения имеет тип ссылки на константный объект. кстати, неясно, чем не угодило обращение по ссылке вместо формального параметра? если будет просто тип class X - то он будет копироваться и передаваться через стек. а нафиг это нужно, если всё равно операнд константный?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.