두 클래스가 있습니다. foo
및 bar
입니다. foo
의 생성자는 bar
클래스가 인스턴스화 할 수 있도록 private
입니다. 또한클래스가 친구로 인식되지 않습니다.
// foo.h
class foo
{
friend class bar;
private:
foo()
{}
};
// bar.h
class bar
{
public:
bar()
{
foo* f = new foo();
}
};
나는 내가 오류
In instantiation of ‘typename boost::detail::sp_if_not_array::type boost::make_shared() [with T = bar; typename boost::detail::sp_if_not_array::type = boost::shared_ptr]’:| /home/..../Projects/CodeBlocks/../bar.cpp|18|required from here| /home/..../Projects/CodeBlocks/../foo.h|23|error: ‘foo::foo()’ is private| ||=== Build finished: 1 errors, 2 warnings (0 minutes, 5 seconds) ===|
을 얻는 프로그램을 빌드하려고하지만 그러나 편의상 여기
그것을 언급하지 않았다 boost::shared_ptr
을 사용하고 있기 때문에 bar.h 먼저 지어 질까? 그렇다면이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?
'bar'는'foo'의 친구 일 수 있지만'boost :: make_shared'는 아닙니다. 대신에'boost :: shared_ptr' 생성자를 직접 사용하십시오. – Praetorian