Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Получение адреса класса


Автор: mant 30.6.2004, 01:45
Здраствуйте.
Такая проблема.
Как получить адресс на класс в конструкторе?

То есть конструктор должен давать по ссылке указатель на класс.
Замучался...

Автор: Масяня 30.6.2004, 04:55
Это делает - this

Автор: achmed 30.6.2004, 09:02
в C++ нет адресов классов, есть только адреса обьектов.

Автор: mant 30.6.2004, 10:50
Как конструктор который не может возвращать сможет передать this? Не присваивая this переменным класса

Автор: Peter 30.6.2004, 11:05
Код
class A{
...
public A(...);
...
};

A::A(...){
...
}

A* pA = new A(...);


Оно?

Автор: Олег М 30.6.2004, 14:24
mant объясни подоходчивее, что надо.
В конструкторе указатель this уже определён - делай с ним что угодно, хоть удаляй

Автор: mant 1.7.2004, 00:40
Вот как должно быть:

class A{
...
public A(...);
...
};

A::A(...){
...
}


A pA(переменная в которую конструктор запишет this);

Есть же хитрые методы.
Наверно.. thumbs-up.gif

Автор: Олег М 1.7.2004, 10:08
Цитата
A pA(переменная в которую конструктор запишет this);

Немного непонятно. Может так?
Код

class A
{
public:
A(A * &ptr) { ptr=this;} //или наоборот                    (A &*ptr)
}

Передаёшь в конструктор ссылку на указатель и присваеваешь

Автор: Масяня 1.7.2004, 18:48
Цитата(mant @ 30.6.2004, 10:50)
Как конструктор который не может возвращать сможет передать this? Не присваивая this переменным класса

Это можно сделать (вернуть this) через параметр конструктора, например,
Код
A(A**ppA/*Out*/)
{
*ppA = this;
}

Автор: Конструктор 2.7.2004, 09:41
Я кажется совсем тупой, но я в корне не понимаю зачем нужно получать из конструктора this, когда он и так выдатся конструктором.

Напишем мы
class * var = new class();
и var будет содержать этот самый this.
Напишем
class var;
и &var даст нам тот же самый this.

Автор: Олег М 2.7.2004, 09:57
Цитата
Я кажется совсем тупой, но я в корне не понимаю зачем нужно получать из конструктора this, когда он и так выдатся конструктором.

Напишем мы
class * var = new class();
и var будет содержать этот самый this.
Напишем
class var;
и &var даст нам тот же самый this.

Ну это ежу понятно. А насчёт зачем - парень спрашивает - мы извращаемся biggrin.gif

Автор: Конструктор 2.7.2004, 10:00
Да, а я не понял. Далеко мне до ежей. biggrin.gif

Автор: Олег М 2.7.2004, 11:07
Цитата
Да, а я не понял. Далеко мне до ежей

Тоже что-ли вчера футбол смотрел?

Автор: Конструктор 2.7.2004, 11:37
Да нет, я по жизни biggrin.gif

Автор: achmed 2.7.2004, 12:43
имхо mant сам не знает чего хочет, а если и знает, то не может обьяснить,

mant, переменная this - это предопределенная, которая неявно передается
каждому нестатическому методу класса, кстати она костантная, в вашем случае
она имеет тип const A *, т.е. ее нельзя изменить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)