2014-01-17 87 views
4

我有這樣的錯誤:C++丟棄預選賽

BSPArduino.cpp:316: error: passing 'const BSPArduino' as 'this' argument of 'virtual void BSPArduino::enableWdt(const WATCHDOG_TIMER_DELAY&, const ___bool&)' discards qualifiers

這種方法是這樣定義是:

void BSPArduino::enableWdt(const WATCHDOG_TIMER_DELAY &delay, const ___bool &enable) 

我想叫它像:

enableWdt(this->watchdogTimer, ___false); 

帶:

WATCHDOG_TIMER_DELAY watchdogTimer; 

我不明白爲什麼這個版本錯誤...

非常感謝你的幫助

安東尼

+1

調用的上下文是const(例如void f()const {...}) –

+1

您正在調用一個非const方法,其中的對象是const。 – segfault

回答

3

你試圖從const成員函數調用非const功能;這是不允許的。

如果可能,請將const限定符添加到enableWdt。如果這是不可能的(因爲它修改了對象),那麼您必須從調用函數中刪除const限定符,或者重新構造代碼,以便從其他地方調用enableWdt

13

BSPArduino :: enableWdt()是一個非const方法。如果你嘗試從const函數中調用一個非const方法,你會得到這個錯誤。

本質上,錯誤是試圖告訴你,你放棄了「這個」的常量。

+1

一天中的話是......不變的!在描述遵守[常量正確性](https://isocpp.org/wiki/faq/const-correctness#overview-const)時常用。 – alan

相關問題