我想知道如何在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);
}
答案 0 :(得分:5)
这将是:
MyClass2()
{
pObjectName = this;
}
但你不需要这样做。 this
指针隐式传递给类的每个非静态成员函数。
答案 1 :(得分:2)
在类中,您可以使用this
访问指向对象的指针。在每个实例方法中隐式定义并传递此指针。因此,您实际上并不需要将其记忆到另一个变量中。
答案 2 :(得分:1)
您需要使用this
,例如:
MyClass2()
{
pObjectName = this;
}
答案 3 :(得分:0)
为什么不说:
MyClass object;
printf("%p", &object);