클래스/구조체의 사용자 정의 복사 생성자를 원자 변수의 배열로 작성하는 방법은 무엇입니까? 예를 들어, 다음 코드는 그 이유클래스 또는 구조체를 원자 배열로 초기화하는 방법
struct foo
{
std::array<std::atomic_int,3> a;
foo() = default;
foo(const int& i, const int& j, const int& k):a{{i,j,k}}{}
}
를 컴파일되지 않습니다 "오류 : 여기 선언이 __atomic_base (CONST이 &을 __atomic_base) = 삭제;" 즉 이것은 원자 적 유형의 정의에서 삭제됩니다. 그것이 비 원자 적 이었다면 그것은 행해졌을 것이다.
이렇게하는 방법이 있습니까?
나는 여기서 토론을 마쳤다 C++ - How to initialise an array of atomics?.
참고 :'foo는 (CONST의 INT & I, CONST의 INT & j, const int & k)'는 복사 생성자 *가 아닙니다. 만약 당신이 그 생성자를 작성하고 싶다면 * foo (const int & i, const int & j, const int & k) : a {{{i}, {j}, {k }}} {}'이것은 집계 멤버의 복사 초기화를 호출하는 집계 초기화와 관련이 있습니다. – dyp
안녕하세요 @dyp, 지적 해 주셔서 고맙습니다. 문제는 이제 foo (const int & i, const int & j, const int & k) {a [0] .store (int (i)); a [1]. 저장소 (int (j)); a [2]. 저장소 (int (k));}. 감사! – BapiC