2013-03-18 164 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

相關問題