volatile 可以用于类对象吗? 喜欢:
volatile Myclass className;
问题是它不能编译, 当调用某些方法时,到处都会出现错误: 错误 C2662:“函数”:无法将“this”指针从“volatile 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
根据您的代码进行编辑:
bool volatile push(struct Data element);
声明一个 non-volatile
成员函数,它返回一个 bool volatile
(= volatile bool
)。你要
bool push(struct Data element) volatile;
关于c++ - 定义 volatile 类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078237/