내가 지금 가지고 이런 설정되어 한 것 :는 중첩 된 클래스가 정의 된 경우에도 중첩 클래스 -에서 부모 클래스를 사용할 수 없습니다 이후
template<typename T> class Parent {
struct Nested;
std::unique_ptr<Nested> ptr;
public:
// stuff
~Parent();
};
template<typename T> struct Parent<T>::Nested {
Parent<T> p;
// stuff
};
비주얼 스튜디오 나에게 Nested
구조체는 그 오류를 제공합니다형식을 사용하고 있습니다. 인 경우 이후에 Parent
클래스가 완료되었습니다.
이 문제를 어떻게 해결할 수 있습니까?
편집 : 경우 그것은 분명하지 않았다, 나는 후 Nested
클래스는 불완전한 유형으로 unique_ptr
수 있도록 정의 때까지 지연 소멸자 정의를 사용했다. 또한 Nested
이 불완전하지 않아서 Nested
에 Parent
멤버가 포함되어있어 불완전하지 않기 때문에 가장 관련이 없습니다. 또한 std::function<void(Nodes*)>
을 사용하여 Deleter를 명시 적으로 지우면 문제가 해결되지 않습니다.
이 코드는 MSVS2010에서 컴파일됩니다 (상단에'#include'을 추가 한 후) –
Attila
그것은 나를위한 것이 아닙니다. – Jagannath
** 내 나쁜 ** ** 정확하게 ** 정확한 **로 ** 닫기 ** 투표를 ** 잘못 **있다. 투표를 닫지 마십시오. –