我的第一个问题是:有没有办法访问atomic<struct>对象中struct的成员?例如,我得到编译器错误:
struct std::atomic<node>’ has no member named ‘data’ a.data = 0;
Run Code Online (Sandbox Code Playgroud)
在这一部分
struct node{
int data;
node* next;
};
int main(){
atomic<node> a;
a.data = 0;
}
Run Code Online (Sandbox Code Playgroud)
我可以通过创建一个像这样的临时节点来解决它:
atomic<node> a;
node temp;
temp.data = 0;
a.store(temp);
Run Code Online (Sandbox Code Playgroud)
但这似乎并不优雅.
第二个问题是,如果我有一个指向原子对象的指针怎么办?反正有没有直接访问节点的成员?显然以下不编译,如何将其更改为在b的节点值中存储0?
atomic<node> b = new node;
b->data = 0;
Run Code Online (Sandbox Code Playgroud)
这是我发现的一个解决方案,但同样,有更优雅的方式吗?
atomic<node> *b;
node temp;
temp.data = 0;
b->store(&temp);
Run Code Online (Sandbox Code Playgroud)
最后,atomic<node*>和之间有什么区别atomic<node>*