C++ 11의 임의 클래스의 임의 생성기 호출을 포함하는 상수 함수를 처리하는 올바른 방법은 무엇입니까? 함수의 상수 플래그를 포기하는 것이 더 좋을까요 아니면 생성자와 배포를 클래스의 변경 가능한 요소로 선언하는 것이 더 낫겠습니까? (컴파일되지 않음) 최소한의 예는 다음과 같을 수 있습니다상수 정확도 및 <random>
#include <random>
class foo
{
std::mt19937 MyGenerator;
std::normal_distribution<precision_type> gauss;
double get_rnd() const {return gauss(MyGenerator);}
};
작은 예제를 게시 할 수 있습니까? 'random' 인스턴스가 클래스 멤버를 변경하려고 시도하지 않고 그 자체가 멤버가 아니라면 함수는 여전히'const' 상태를 유지할 수 있습니다. – CoryKramer
@Cyber : '임의의'인스턴스가 멤버라는 질문에 따라 (질문은 "요소"라고 말합니다). –
고려 사항 중 하나는 스레드 안전성입니다. 통상은 thread 세이프로서 처리되는 Const 메소드입니다. 그래서 호출이 내부 뮤텍스에 의해 보호된다면, 나는 그것이 가변 멤버로 만들 수있는 것처럼 보입니다. 그렇지 않으면 멀티 스레딩의 약간의 기회가 관련되어있는 것처럼 보입니다. – dewaffled