Как установить объединение в атомарное с помощью std :: atomic? Или я должен объявить членов союза атомарным вместо этого?C++ std :: atomic union
typedef union {
int integer;
float flt;
double dbl;
int *intArray;
float *floatArray;
unsigned char *byteArray;
} ValueUnion;
class FooClass {
public:
std::atomic<ValueUnion> value;
};
Доступ к объединению дает ошибку:
typedef union {
std::atomic<int> integer;
std::atomic<float> flt;
std::atomic<double> dbl;
std::atomic<int*> *intArray;
std::atomic<float*> *floatArray;
std::atomic<unsigned char*> *byteArray;
} ValueUnion;
и объявить переменную значение члена быть как ниже:
foo->value.floatArray = NULL;
error: no member named 'floatArray' in 'std::__1::atomic<ValueUnion>'
foo->value.floatArray = NULL;
мне нужно сделать что-то подобное делать?
class FooClass {
public:
ValueUnion value;
};