2014-01-17 4 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

Вы вызываете метод non-const с объектом, который является const. – segfault

ответ

3

Вы пытаетесь вызвать не- const функцию из функции в const члена ; это не допускается.

Если возможно, добавьте квалификатор const в положение enableWdt. Если это невозможно (потому что он изменяет объект), вам придется либо удалить квалификатор const от вызывающей функции, либо перестроить код, чтобы вызывать enableWdt из другого места.

13

BSPArduino :: enableWdt() - метод неконстантный. Если вы попытаетесь вызвать метод non-const из константы, вы получите эту ошибку.

По сути, ошибка пытается сказать вам, что вы отбрасываете константу «это».

+1

Слово дня - это ... постоянство! Часто используется при описании соблюдения [const correctness] (https://isocpp.org/wiki/faq/const-correctness#overview-const). – alan

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