نه شما یه چیزی رو در مورد scope resolution متوجه نشدید. ببینید اگه من توی تعریف کلاسم بگم مثلا متد methodName() رو دارم. در بدنه کلاسم وقتی میخوام این تابع رو تعریف کنم فرمتش به شکل زیر هست :

returnType ClassName::methodName(parameters)


این از این. خوب حالا شما اگه دقت کنید میبینید که توی header کلاس pushbutton یک enume وجود داره به اسم ButtonState. خوب این enum تو scope این کلاس هست. حالا مقدار بازگشتی متد getState یک ButtonState هست. پس اگر قرار باشه این سینتکس رو فارسی بخونیم میشه متد getState از کلاس PushButton که مقدار بازگشتی آن ButtonState از کلاس PushButton هست و پارامتر ورودی ای ندارد.

به سودوکدی که بالاتر نوشتم دوباره دقت کنید :
returnType = PushButton::ButtonState
ClassName = PushButton
methodName = getState
parameters = none

اگر توضیح بیشتری نیاز بود در خدمتم.
موفق باشید