Мой первый вопрос: есть ли способ доступа к членам структуры в объекте atomic<struct>
?
Например, я получаю ошибку компилятора:
struct std::atomic<node>’ has no member named ‘data’ a.data = 0;
в этом сегменте
struct node{
int data;
node* next;
};
int main(){
atomic<node> a;
a.data = 0;
}
Я могу обойти это, создав временный node так:
atomic<node> a;
node temp;
temp.data = 0;
a.store(temp);
но это не кажется очень элегантным.
Второй вопрос: что, если у меня есть указатель на атомный объект? Есть ли вообще доступ к элементам node напрямую? Очевидно, что следующее не компилируется, как бы это изменить, чтобы сохранить 0 в значении node в b?
atomic<node> b = new node;
b->data = 0;
Это решение, которое я нашел, но опять же, есть ли более элегантный способ сделать это?
atomic<node> *b;
node temp;
temp.data = 0;
b->store(&temp);
И, наконец, в чем разница между atomic<node*>
и atomic<node>*