2013-03-18 172 views
1

我想知道如何在C++的构造函数中创建一个新创建的对象的指针?在构造函数中创建一个对象的指针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); 

} 

回答

5

这将是:

MyClass2() 
{ 
    pObjectName = this; 
} 

但你并不需要做的。 A this指针隐式地传递给类的每个非静态成员函数。

+0

非常感谢,正是我一直在寻找! – Christiaan 2013-03-18 21:11:33

+0

@Christiaan:很高兴帮助。如果这可以解决您的问题,请考虑将答案标记为已接受(或任何其他正确答案):) – 2013-03-18 21:12:36

1

你需要使用this,e.g:

MyClass2() 
{ 
    pObjectName = this; 
} 
2

里面的类可以访问指向对象与this。这个指针在每个实例方法中都被隐式地定义和传递。因此,你并不需要记住它到另一个变量中。

0

为什么不说:

MyClass object; 
printf("%p", &object); 
+0

因为我不会仅将它用于printf函数;)。非常感谢! – Christiaan 2013-03-18 21:10:48

+0

我不明白你想达到什么目的。 – 2013-03-18 21:14:15

相关问题