0
問題的標題很簡單。這裏是代碼:警告:派生類的成員變量在基類後初始化
class xxx : public Scheduled
{
long int _wait_time;
boost::function< void() > _cb;
mutable boost::mutex _mutex;
public:
xxx(boost::function< void() > callback, unsigned int wait_time = 10000000)
:_wait_time(wait_time),_cb(callback)
,Scheduled(Timer(_wait_time, 0))
{
this->stop();
}
};
,雖然我尊重初始化的順序,這裏是我得到的警告:
---: In constructor ‘xxx::xxx(boost::function<void()()>, unsigned int)’:
---: warning: ‘xxx::_cb’ will be initialized after
---: warning: base ‘Scheduled’
---: warning: when initialized here
有什麼想法?謝謝
謝謝,但如果一個基類的初始化依賴於派生成員呢?比如你糾正了我的等待時間。如果'_wait_time'是一個在被提供給base之前必須被初始化的類呢? – rahman
@rahman然後你的設計被打破了。基類必須在類的任何非靜態成員之前初始化。在基類初始化之前,沒有任何派生類成員已經初始化,因此您將使用垃圾值。 – NathanOliver