2013-03-18 8 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 Указатель неявно передается каждой нестатической функции-члена класса.

+0

Большое спасибо, именно то, что я искал! – Christiaan

+0

@Christiaan: Рад, что это помогло. Если это решает вашу проблему, пожалуйста, подумайте о том, чтобы принять ответ (или любой другой правильный ответ) :) –

1

вам нужно использовать this, например:

MyClass2() 
{ 
    pObjectName = this; 
} 
2

Внутри класса вы можете получить доступ к указателю на объект с this. Этот указатель определен и передается неявно внутри каждого метода экземпляра. Поэтому вам не нужно запоминать его в другой переменной.

0

Почему бы не сказать:

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

Потому что я не буду использовать его только для функции printf;). Спасибо, много! – Christiaan

+0

Я не понимаю, чего вы пытаетесь достичь. –

Смежные вопросы