boost :: noncopyable에서 상속 한 멤버를 상속하거나 갖는 오브젝트 O를 반환하는 팩토리 함수를 구현해야한다고 가정합니다.boost :: noncopyable을 사용하는 C++ 팩토리 함수
struct O : boost::noncopyable {};
O factory() { return O(); }
물론 반환 값은 컴파일되지 않습니다.
이러한 팩토리 메서드를 구현하는 데 사용하는 방법은 무엇입니까? 가능한 경우 복사 생성자를 재정의하는 것을 피하고 참조 또는 포인터 대신 값을 반환하는 것을 정말 좋아합니다. 나는이 관리 codeka에서 일부 땜질 및 연결 후
(이 작업을 수행, ++ g으로 작동하는 것 같다 방법 휴대용없는 생각) :
이 noncopyable입니다template<class E>
struct threads_parallel_for_generator
: for_generator<E, threads_parallel_for_generator<E> > {
typedef for_generator<E, threads_parallel_for_generator> base_type;
struct factory_constructor {
explicit factory_constructor(const E &expression)
: expression_(expression) {}
operator const E&() const { return expression_; }
private:
E expression_;
};
threads_parallel_for_generator(const factory_constructor & constructor)
: base_type(constructor, *this) {}
private:
boost::mutex mutex_;
};
template<class E>
static threads_parallel_for_generator<E>
parallel_for(const E &expression) {
typedef threads_parallel_for_generator<E> generator;
return typename generator::factory_constructor(expression);
}
문제가 나를 위해 가치가있을 수 있습니다. 클리너 구문 (일부 미친 템플릿 표현을 boost :: mutex와 결합하여 작업하는 경우) – Anycorn
@aaa : 확실하게 상황에 달려 있다고 생각합니다. –