2014-11-04 3 views
1

У меня есть этот класс декларация, которая должна установить hour, minute и second переменных внутри моего Time класса через указатель:Изменить переменный класс для ссылки

class Time 
{ 
public: 
    int hour; //0-23 
    int minute; //0-59 
    int second; //0-59 
}; 

Теперь Следующий код должен работать для этого определения класса:

Time clock; 
Time *clockPtr = &clock; 

clock.hour=8; 
clock.minute=12; 
*clockPtr.second=0; 

Будет ли это работать? Я думаю, что поскольку указатель указывает на значение адреса &clock, он должен работать. Исправьте меня, если я ошибаюсь.

+2

Будьте осторожны с [оператор старшинства] (Http: //en.cppreference .com/ж/CPP/язык/operator_precedence). – juanchopanza

+1

Вы пытались скомпилировать его? – RedX

+0

@RedX ... со всеми предупреждениями. –

ответ

3

Как уже упоминалось в комментариях, вам необходимо позаботиться о операторах precedence операторов * и . dereferenccing. Просто измените эту строку

*clockPtr.second=0; 

в

(*clockPtr).second=0; 

или @Thomas Matthews указал

clockPtr->second=0; 

LIVE DEMO

+3

Проблема с приоритетом может быть устранена с помощью оператора '->': 'clockPtr-> second = 0;' –

Смежные вопросы