Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2015, 16:57   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Не работает оператор преобразования

Всем доброго дня !

Для выполнения этой строки

Код:
c=6+a;
написал внешний оператор +

Код:
A  operator+ (int k, const A &r) {return A(k+r.func_1());}
но нужно использовать оператор + внутри класса .

поэтому решил написать оператор преобразования числа int в тип A

Код:
A operator A(int k) {return A(k);}
но он не работает )))

подскажите пожалуйста в чем ошибка ?
Код:
class A
{
    int x;
public:
    A() : x(0) {}
    A(int a) : x(a) {;}
    ~A() {}
     A operator A(int k) {return A(k);}
    A  operator + (const A &rhs) {return A(x+rhs.x);}
   int func_1() const {return x;}
};
 
 
int main() 
{
    A a=4,c;
    c=6+a;
        return 0;
}
RAFA91 вне форума Ответить с цитированием
Старый 05.10.2015, 17:02   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если внутри, то вроде функция (ну operator+) тоже должна быть const.

А зачем внутри? Вроде рекомендуется бинарные операторы делать не внутри (и friend если надо).
http://stackoverflow.com/a/4622467/964478
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 05.10.2015 в 17:06.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2015, 17:07   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Код:
A operator A(int k) {return A(k);}
тут наверное накосячил.

оператор + работает нормально.

______________________


заметил еще такую фиговинку.

строка c = a+6; работает нормально, так как есть конструктор A(int a)

когда же в класс добавляю

Код:
operator int() {return x;}
с целью выполнения к примеру строки

Код:
int x = c;
то получаю ошибку.

когда строку c = a+6; убираю - то все окей.
RAFA91 вне форума Ответить с цитированием
Старый 05.10.2015, 19:42   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

А какие ошибки вылетают писать не надо уже? Мы должны всё это сами смотреть? Оно нам нафиг не нужно, поверьте.
Croessmah вне форума Ответить с цитированием
Старый 06.10.2015, 12:32   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
А какие ошибки вылетают писать не надо уже? Мы должны всё это сами смотреть? Оно нам нафиг не нужно, поверьте.
к примеру вот.

при выполнении c=a+6; вылезает ошибка.

когда



operator int()
{
cout<<"operator int() "<<this<<endl;
return x;
}

убираю то все окей

http://ideone.com/yHjjGj
RAFA91 вне форума Ответить с цитированием
Старый 07.10.2015, 10:15   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а может стоит прочитать сообщение об ошибке?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает оператор << RAFA91 Общие вопросы C/C++ 8 25.06.2015 12:28
Не работает оператор if. PHP Luca Brasi Помощь студентам 16 29.10.2014 21:32
Оператор if работает некорректно Night_Devil Общие вопросы по Java, Java SE, Kotlin 1 04.12.2012 11:49
Не работает оператор delete [] zmejchik Общие вопросы C/C++ 2 08.11.2011 15:54
не работает оператор No Error porsh59 Microsoft Office Excel 2 16.07.2011 16:46