C++相談室 part87
■ このスレッドは過去ログ倉庫に格納されています
0338デフォルトの名無しさん
2010/12/21(火) 23:01:46protected:
A(){}
virtual ~A()=0;
};
A::~A(){}
class BFactory;
class B {
private:
B(){}
virtual ~B(){}
friend class BFactory;
};
class BFactory {
public:
BFactory(){};
~BFactory(){};
std::tr1::shared_ptr<A> CreateB(){return std::tr1::shared_ptr<B>(new B());}
};
こんな感じでshared_ptrをBFactoryから返そうとしたら、
gcc43.4で「virtual B::~B()’ is private(privateメンバーにアクセスできない)」とのエラーが出ます。
クラスBの直接deleteを防ぎ、かつshared_ptrでメモリ管理の煩雑さを防ぐ方法はないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています