在构造函数C++; < P> >我想知道如何在C++中构造指向新创建对象的指针?
班级的地址是什么在构造函数C++; < P> >我想知道如何在C++中构造指向新创建对象的指针?,c++,object,pointers,constructor,C++,Object,Pointers,Constructor,班级的地址是什么 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
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);
}
它将是:
MyClass2()
{
pObjectName = this;
}
但你不需要这样做。此
指针隐式传递给类的每个非静态成员函数。它将是:
MyClass2()
{
pObjectName = this;
}
但你不需要这样做。
此
指针隐式传递给类的每个非静态成员函数。您需要使用此
,例如:
MyClass2()
{
pObjectName = this;
}
您需要使用此,例如:
MyClass2()
{
pObjectName = this;
}
在类内部,您可以使用
this
访问指向对象的指针。该指针在每个实例方法中定义并隐式传递。因此,您实际上不需要将其存储到另一个变量中。在类中,您可以使用this
访问指向对象的指针。该指针在每个实例方法中定义并隐式传递。因此,您实际上不需要将其存储到另一个变量中。为什么不说:
MyClass object;
printf("%p", &object);
为什么不说:
MyClass object;
printf("%p", &object);
因为我不会将其仅用于printf函数;)。不过非常感谢!我不明白您想要实现什么。因为我不会将它仅用于printf函数;)。不过非常感谢!我不明白你想要实现什么。非常感谢,这正是我想要的@克里斯蒂安:很高兴这有帮助。如果这解决了你的问题,请考虑将答案标记为“接受”(或任何其他正确答案):“谢谢,我正在寻找的正是!”克里斯蒂安:很高兴这有帮助。如果这解决了你的问题,请考虑将答案标记为接受(或任何其他正确答案):