Передача параметра как ссылки в классе
От: izverg США  
Дата: 27.05.03 19:49
Оценка:
/*
Здравствуйте. Я использую компилятор mingw32 (gcc 3.2). Возник вопрос
такого характера, взгляните на ф-цию main(), мне интересно почему
я не могу вызвать метод onChange с созданным на лету экземпляром
класса number ? при компиляции вот такого варианта

child qwe;
qwe.onChange(number(123));

я получаю ошибку компиляции вида
--------
no matching function for call to `child::onChange(number)'
candidates are: virtual void child::onChange(number&)
--------

а если делать так

number temp(234);
child qwe;
qwe.onChange(temp);

то все нормально. Это связанно с тем что "на лету" созданный экземпляр
number может не дожить пока его обработает onChange ? Возможно ли
както добиться первого варианта использования чтобы не плодить temp
объекты ?

Спасибо.

ps. Полный код программы приведен ниже.
pps. Только что компильнул оба варианта на vc++ 7.0 и все работает ((
Может у gcc есть ключи для компиляции чтобы отбиннаться от этой проблемы ?
*/

#include <stdio.h>

class number
{
public:
    int num;
    number(int i) : num(i) {};
    operator int(){ return num; };
};

class base
{
public:
    virtual void onChange(number& e) {};
    virtual void onError(number& e)
    {
     printf("onError: %i\n", (int)e);
    };
};

class child : public base
{
public:
    virtual void onChange(number& e)
    {
     printf("virtual onChange:\n");
     onError(e);
    };
};

int main()
{
 number temp(234);
 child qwe;
// qwe.onChange(number(123));
 qwe.onChange(temp);
 return 0;
}


Исправлена подсветка синтаксиса. -- ПК.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.