Anthony
Anthony

Reputation: 325

C++ discards qualifiers

I have this error:

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

This method is define like this:

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

I want to call it like this:

enableWdt(this->watchdogTimer, ___false);

With:

WATCHDOG_TIMER_DELAY watchdogTimer;

Why do I have this build error?

Upvotes: 5

Views: 48131

Answers (2)

Bids
Bids

Reputation: 2449

BSPArduino::enableWdt() is a non-const method. If you try and call a non-const method from a const one you will get this error.

Essentially the error is trying to tell you that you are discarding the constness of "this".

Upvotes: 17

Mike Seymour
Mike Seymour

Reputation: 254581

You're trying to call a non-const function from a const member function; that's not allowed.

If possible, add a const qualifier to enableWdt. If that's not possible (because it modifies the object) then you'll have to either remove the const qualifier from the calling function, or restructure the code so that enableWdt is called from somewhere else.

Upvotes: 4

Related Questions