Я использую встроенный компилятор для TI TMS320F28335, поэтому я не уверен, является ли это общей проблемой C ++ (у меня под рукой нет компилятора C ++) или просто моим компилятором. Добавление следующего фрагмента кода в мой код приводит к ошибке компиляции:
"build\main.cpp", line 61: error #317: the object has cv-qualifiers that are not
compatible with the member function
object type is: volatile Foo::Bar
Ошибка исчезает, когда я комментирую функцию initWontWork()
ниже. Что говорит мне ошибка, и как я могу ее обойти, не прибегая к использованию static
функций, которые работают на volatile struct
?
struct Foo
{
struct Bar
{
int x;
void reset() { x = 0; }
static void doReset(volatile Bar& bar) { bar.x = 0; }
} bar;
volatile Bar& getBar() { return bar; }
//void initWontWork() { getBar().reset(); }
void init() { Bar::doReset(getBar()); }
} foo;