ソフトウェアでクラスの前方宣言を使用したいので、typedef
を使用して、クラスの完全宣言内で使用できます。
このようなSmth:
class myclass;
typedef boost::shared_ptr<myclass> pmyclass;
typedef std::list<pmyclass > myclasslist;
class myclass : public baseclass
{
private: // private member declarations
__fastcall myclass();
public: // public member declarations
__fastcall myclass(myclass *Parent)
: mEntry(new myclass2())
{
this->mParent = Parent;
}
const myclass *mParent;
myclasslist mChildren;
boost::scoped_ptr<myclass2> mEntry;
};
だから私の質問は:この方法に何か欠点はありますか?前方宣言に関するデストラクタの問題に関するいくつかの議論を思い出しますが、そこからすべてを引き出すことはできませんでした。
または、このようなものを実装する他のオプションはありますか?
ありがとう。
編集:私が言及していた議論を見つけました:ここに