나는 C++ 라이브러리를 구축 중이다. 내가 std::unique_ptr
에서 다른 struct
까지 사용자가 숨기려고하는 struct
이 있습니다. 예를 들어헤더 파일에서 스마트 포인터의 형식 인수를 생략 할 수 있습니까?
:
struct MyStruct {
int x;
private:
std::unique_ptr<MyPrivateStruct> y;
};
지금, 나는 사용자들이 레이아웃을 알 수 있도록 포함 할 수있는 헤더 파일에 MyStruct
을 지정해야합니다. 그러나 이것은 내가 원하지 않는 MyPrivateStruct
의 헤더를 노출해야합니다. unique_ptr
의 크기는 유형에 관계없이 동일하므로 이와 같은 작업을 수행 할 수 있습니까?
struct MyStruct {
int x;
private:
std::unique_ptr<auto> y;
};
y
의 유형은 다음 내 cpp
파일에 의해 결정된다.
이 매우없는이 질문에 대한 대답은 앞으로 선언을 사용하는 것입니다 때문에 Can't use std::unique_ptr<T> with T being a forward declaration과 같은 질문입니다. 이 질문은 전달 선언을 사용할 때의 문제입니다.
그냥 앞으로 구조체를 선언 하시겠습니까? 아니면 그 일을 피하려고하는 것입니까? – Borgleader
[T가 순방향 선언 인 std :: unique \ _ptr을 사용할 수 없음] (http://stackoverflow.com/questions/28386185/cant-use-stdunique-ptrt-with-t-being- a-forward-declaration) –
LogicStuff
@LogicStuff 아닙니다. 편집을 참조하십시오. – sdgfsdh