/*
Здравствуйте. Я использую компилятор 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;
}
Исправлена подсветка синтаксиса. -- ПК.