配列、形状、点のいくつかのクラスがあります。ポイントは形状の一種です。
ShapePtrの配列を作成し、最初の要素にポイントを割り当てました。配列の最初の要素を印刷すると、奇妙な数字が表示されるだけです(メモリの場所だと思いますか?)。これは正常ですか?その位置に割り当てられたポイントを印刷する方法はありますか?または、ポイントはすでに破壊されていますか?私のメインは次のとおりです。
{
// Typedef for a shared pointer to shape
typedef boost::shared_ptr<Shape> ShapePtr;
// a typedef for an array with shapes stored as shared pointers.
typedef Array<ShapePtr> ShapeArray;
ShapeArray my_ShapeArray;
ShapePtr my_Point (new Point(3.1459));
my_ShapeArray[0] = my_Point;
cout << my_ShapeArray[0] << endl;
return 0;
}
出力は次のとおりです(コンストラクタとデストラクタについていくつかコメントがあります):
配列コンストラクター呼び出し(デフォルト)
形状コンストラクター呼び出し(デフォルト)
ポイントコンストラクター呼び出し(デフォルト)
002DDA20
ポイントデストラクタコール
シェイプデストラクタコール
配列デストラクタ呼び出し
ポイントを印刷した後にデストラクタが呼び出されるように見えるので、少し混乱していますが、ポイントを印刷する代わりに、メモリアドレスを印刷しているように見えます。理解するのを手伝ってくれませんか。ありがとう!