Энергозависимое может использоваться для объектов класса? Как:
volatile Myclass className;
Проблема состоит в том, что это не компилирует, везде когда некоторый метод вызывается, ошибка говорит: ошибка C2662: 'функция': не может преобразовать 'этот' указатель из 'энергозависимого MyClass' к 'MyCLass и'
Какова проблема здесь и как решить ее?
Править:
class Queue {
private:
struct Data *data;
int amount;
int size;
public:
Queue ();
~Queue ();
bool volatile push(struct Data element);
bool volatile pop(struct Data *element);
void volatile cleanUp();
};
.....
volatile Queue dataIn;
.....
EnterCriticalSection(&CriticalSection);
dataIn.push(element);
LeaveCriticalSection(&CriticalSection);
Да, можно, но тогда вы сможете вызывать только функции-члены, которые объявлены volatile
(так же, как и ключевое слово const
). Например:
struct foo {
void a() volatile;
void b();
};
volatile foo f;
f.a(); // ok
f.b(); // not ok
Edit based on your code:
bool volatile push(struct Data element);
объявляет non-volatile
функцию-член, которая возвращает bool volatile
(= volatile bool
). Вы хотите
bool push(struct Data element) volatile;
Я думаю, он хотел сказать
bool push(struct Data element) volatile;
вместо
bool volatile push(struct Data element);
. Также посмотрите здесь http://www.devx.com / tips / Tip / 13671