私が持っているとします:
- P と C の 2 つのクラス。
- P <>-C 間の構成関係。つまり、P のすべてのインスタンスには、親の P インスタンスが破棄されると破棄される C のインスタンスが含まれます。
これを実装するには、C++ I で次のようにします。
- 2 つのクラス P と C を定義します。
- タイプ boost::shared_ptr の P のメンバー変数を定義し、P のコンストラクターで新しく作成されたオブジェクトで初期化します。
コード例を以下に示します。
#include "boost/scoped_ptr.hpp"
class C
{
public:
C() {}
private:
};
class P
{
public:
P() : childC(new C()) {}
private:
boost::shared_ptr<C> childC;
};
int main(int argc, char** argv)
{
P p;
}
どういうわけか、この単純なコード例を作成できず、その理由がわかりません (私はプログラミングの初心者です)。
エラー:
クラス「P」には「childC」という名前のフィールドがありません</p>
期待される ';' 「<」の前 トークン
「::」の無効な使用</p>
ISO C++ は型のない 'shared_ptr' の宣言を禁止します