std :: atomic을 사용하여 유니온을 유니온으로 설정하는 방법은 무엇입니까? 아니면 노동 조합의 구성원이 대신 원자라고 선언해야합니까?C++ std :: atomic union
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;
내가 뭔가를 할 필요가 있는가 : 노동 조합에
typedef union {
int integer;
float flt;
double dbl;
int *intArray;
float *floatArray;
unsigned char *byteArray;
} ValueUnion;
class FooClass {
public:
std::atomic<ValueUnion> value;
};
액세스 오류를 준다?
class FooClass {
public:
ValueUnion value;
};