小编Mat*_*ton的帖子

对原子结构和指针的误解

我的第一个问题是:有没有办法访问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>*

c++ struct pointers atomic

15
推荐指数
1
解决办法
3169
查看次数

标签 统计

atomic ×1

c++ ×1

pointers ×1

struct ×1