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 回答