Тема: класы в C++
Показать сообщение отдельно
Старый 14.01.2011, 19:00   #7
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Код:
X _x = X();
if (_x->wartime()==true)
Fix'd
Ерунду какую-то понаписали...

либо при объявлении экземпляра класса Х _x, использовать оператор "."
Код:
_x.wartime()
либо вместо
Код:
X _x = X();
надо объялять указатель на класс и создавать его
Код:
X* _x = new X();
и тогда использовать оператор "->"

И еще, на кой предмет в объявлении X _x писать = X()
такое объявление пишется просто так X _x;. У конструктора все равно нет параметров.
А если бы были параметры, то так X _x(параметр1, параметр2, ...);

Подытожив все сказанное, правильный вариант выглядит так:
Код:
class X: public Y
{...
public:
...
bool wartime() {return timing;};
...
protected:
bool timing;
...
};

X _x;
if (_x.wartime())
{
   ...
}
И последнее. Если функция объявлена как static, то никаких const не может быть. И не сможет она вернуть значение нестатического члена timing.
А учитывая то как был объявлен класс, функция wartime() возвращает именно переменную член, следовательно никаких статиков.

Последний раз редактировалось Йоха; 14.01.2011 в 19:03.
Йоха вне форума   Ответить с цитированием