Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение адреса класса 
:(
    Опции темы
mant
Дата 30.6.2004, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 29.6.2004

Репутация: нет
Всего: нет



Здраствуйте.
Такая проблема.
Как получить адресс на класс в конструкторе?

То есть конструктор должен давать по ссылке указатель на класс.
Замучался...
PM MAIL   Вверх
Масяня
Дата 30.6.2004, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Это делает - this
PM MAIL   Вверх
achmed
Дата 30.6.2004, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 12.4.2004

Репутация: нет
Всего: нет



в C++ нет адресов классов, есть только адреса обьектов.

PM MAIL   Вверх
mant
Дата 30.6.2004, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 29.6.2004

Репутация: нет
Всего: нет



Как конструктор который не может возвращать сможет передать this? Не присваивая this переменным класса
PM MAIL   Вверх
Peter
Дата 30.6.2004, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Код
class A{
...
public A(...);
...
};

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

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


Оно?


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Олег М
Дата 30.6.2004, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



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

PM MAIL ICQ   Вверх
mant
Дата 1.7.2004, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 29.6.2004

Репутация: нет
Всего: нет



Вот как должно быть:

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

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


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

Есть же хитрые методы.
Наверно.. thumbs-up.gif
PM MAIL   Вверх
Олег М
Дата 1.7.2004, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



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

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

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

Передаёшь в конструктор ссылку на указатель и присваеваешь
PM MAIL ICQ   Вверх
Масяня
Дата 1.7.2004, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



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

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


Это сообщение отредактировал(а) Масяня - 1.7.2004, 18:50
PM MAIL   Вверх
Конструктор
Дата 2.7.2004, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



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

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

PM MAIL WWW ICQ   Вверх
Олег М
Дата 2.7.2004, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



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

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

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

PM MAIL ICQ   Вверх
Конструктор
Дата 2.7.2004, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Да, а я не понял. Далеко мне до ежей. biggrin.gif

PM MAIL WWW ICQ   Вверх
Олег М
Дата 2.7.2004, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
Да, а я не понял. Далеко мне до ежей

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

PM MAIL ICQ   Вверх
Конструктор
Дата 2.7.2004, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Да нет, я по жизни biggrin.gif

PM MAIL WWW ICQ   Вверх
achmed
Дата 2.7.2004, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 12.4.2004

Репутация: нет
Всего: нет



имхо mant сам не знает чего хочет, а если и знает, то не может обьяснить,

mant, переменная this - это предопределенная, которая неявно передается
каждому нестатическому методу класса, кстати она костантная, в вашем случае
она имеет тип const A *, т.е. ее нельзя изменить.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1341 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.