1

C ++のコンストラクターで新しく作成されたオブジェクトへのポインターを作成する方法を知りたいですか?

クラスの住所は何ですか?

class MyClass
{
    public:
};

class MyClass2
{
    public:
    //I need a pointer to the created object
    MyClass2 *pObjectName;

    //Constructor
    MyClass2()
    {
        pObjectName = &//I have no clue how to get the adress of the (not yet) created object.
    }
};

int main()
{
    //The way it works
    //Makes Object
    MyClass *pObject;
    MyClass Object;
    //pObject points to Object
    pObject = &Object;
    //Prints adress of Object
    printf("%p", pObject);


    //The way I would like to see it work
    MyClass2 Object2;
    //Prints adress of Object
    printf("%p", Object2.pObjectName);

}
4

4 に答える 4

5

それはそのようになります:

MyClass2()
{
    pObjectName = this;
}

しかし、あなたはそれをする必要はありません。ポインタは、クラスのthis各非静的メンバー関数に暗黙的に渡されます。

于 2013-03-18T19:32:45.257 に答える
2

クラス内では、オブジェクトへのポインターにアクセスできますthis。このポインターは定義され、すべてのインスタンス メソッド内で暗黙的に渡されます。したがって、それを別の変数に記憶する必要はありません。

于 2013-03-18T19:33:33.467 に答える
1

を使用する必要がありますthis。例:

MyClass2()
{
  pObjectName = this;
}
于 2013-03-18T19:33:32.077 に答える
0

なぜ言わないのですか:

MyClass object;
printf("%p", &object);
于 2013-03-18T19:54:12.180 に答える