Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

Указатель this - C++

13.08.2012, 18:45. Просмотров 850. Ответов 12
Метки нет (Все метки)

Всем привет. Как можно преобразовать указатель this в строку, для дальнейшего использования в функции MessageaBoxA()? Просто - напросто. я думаю, что если сделать преобразование типа (int)this и затем вызвать функцию itoa возможна потеря данных или нет?
Какой максимальный объём памяти может занимать адрес объекта?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2012, 18:45     Указатель this
Посмотрите здесь:

Про указатель *, указатель на указатель **, и про new - C++
#include "stdafx.h" class neuro { public: double *inputs; int inputs_count; neuro(int uc, double ii ) { ...

Указатель((( - C++
Составить программу, которая подсчитывает для из массивов А и В количество различных по значению элементов в каждом из этих массивов....

Указатель на указатель - C++
Чем отличаются указатели на указатель от ссылки на указатель? Встретилась программа для работы со списками. В ней есть функция Insert....

указатель на this - C++
Если в описании метода класа написать list n = *this; list - имя класса, то в n будет содержаться указатель на текущий обьект, ссылка...

указатель - C++
собственно смысл ссылки я понял, грубо говоря передача в функцию адреса переменной что бы функция меняла не копию, а сам передаваемый...

Указатель - C++
Имеется код: // header #ifndef DMA_H_ #define DMA_H_ #include <iostream> class abs { private:

Указатель на указатель - C++
Есть задача: Дана динамическая строка размер массива символов которой точно соответствует строке. написать функцию которая добавляет...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
13.08.2012, 18:48     Указатель this #2
Цитата Сообщение от bgm313 Посмотреть сообщение
Всем привет. Как можно преобразовать указатель this в строку, для дальнейшего использования в функции MessageaBoxA()?
Имя объекта ты не получишь
а так

CString str;
str.Format("%x",this);
MessageBox(str......
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 18:49     Указатель this #3
Зачем вам преобразование this? Это же указатель на объект. Но если у вас есть веские причины, то можно написать (char*)this:
C++
1
char* string=(char*)this;
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
13.08.2012, 18:49     Указатель this #4
Цитата Сообщение от bgm313 Посмотреть сообщение
Какой максимальный объём памяти может занимать адрес объекта?
для 32 битных ос 4 Байта
64 ---- 8 Байт
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
13.08.2012, 19:00  [ТС]     Указатель this #5
Цитата Сообщение от cossack5 Посмотреть сообщение
Но если у вас есть веские причины, то можно написать (char*)this:
C++
1
char* string=(char*)this;
Что-то я сильно сомневаюсь в том, что преобразование произойдёт корректно.

Добавлено через 1 минуту
Цитата Сообщение от cossack5 Посмотреть сообщение
Зачем вам преобразование this?
[/CPP]
Чтобы вывести приветственное сообщение типа: привет от конструктора объекта по адресу this.

Добавлено через 23 секунды
В окне Windows
cossack5
54 / 48 / 1
Регистрация: 02.08.2012
Сообщений: 127
13.08.2012, 19:07     Указатель this #6
Цитата Сообщение от bgm313 Посмотреть сообщение
Чтобы вывести приветственное сообщение типа: привет от конструктора объекта по адресу this.
Если вам нужно адрес, то, разумеется, это не подойдет.
C++
1
2
char str[20];
_itoa((int)this,str,16 /*10*/);
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
13.08.2012, 19:14     Указатель this #7
созвожно подойдет каст в ptrdiff_t и последующее его преобразование в строку каким нибудь из способов. возмножно так же подойдет использование стринг стрима:

C++
1
2
3
4
5
6
7
8
9
#include <sstream>
 
template <typename T>
std::string PtrToString(const T* ptr)
{
   std::ostringstream oss;
   oss << static_cast<const void*>(ptr);
   return oss.str();
}
Еще вариант - это форматный флаг %p
http://www.cplusplus.com/reference/c...cstdio/printf/
Для МФЦшной CString::Format тоже должен работать.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
13.08.2012, 19:32     Указатель this #8
Цитата Сообщение от bgm313 Посмотреть сообщение
от конструктора объекта по адресу this.
не поверишь в Винде this- это и есть адрес объекта
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
14.08.2012, 15:50     Указатель this #9
ValeryS,

Не по теме:

не повериш, в линуксе тоже!

ValeryS
15.08.2012, 07:36
  #10

Не по теме:

Цитата Сообщение от Invader_Zim Посмотреть сообщение
не повериш, в линуксе тоже!
поверю

Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
15.08.2012, 09:27     Указатель this #11
Цитата Сообщение от ValeryS Посмотреть сообщение
не поверишь в Винде this- это и есть адрес объекта
ТС - новичок, а потому не смог грамотно вопрос сформулировать. Ему не надо this преобразовывать в строку, ему нужно распечатать this (как адресную величину) в окошко
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
15.08.2012, 09:45     Указатель this #12
Цитата Сообщение от Evg Посмотреть сообщение
ТС - новичок, а потому не смог грамотно вопрос сформулировать. Ему не надо this преобразовывать в строку, ему нужно распечатать this (как адресную величину) в окошко
Я и показал для MFC
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
3
CString str;
 str.Format("%x",this);
 MessageBox(str......
по моему самое простое

Добавлено через 5 минут
Если не использовать MFC то так
C++
1
2
3
 char buff[20];
sprintf(buff, "%x",this);
MessageBox(buff......
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2012, 10:54     Указатель this
Еще ссылки по теме:

указатель - C++
ввод: (1&lt;=n&lt;=100) вводим n вывод: Сумма элементов до максимума... Input Output 8 1 9 1 -1 -1 9 1 1 0

Указатель на указатель - C++
Всем доброго времени! Совсем недавно начал использовать технику двойных указателей типа Obj ** obj, поэтому путаюсь. Для удобного...

Указатель - C++
Можете объяснить устройство работы ,мне казалось что если вызвать просто ptr то должен возвратиться адрес,а если * ptr ,то значение,здесь...

Указатель на указатель - C++
Добрый день! Читал про многоуровневую адресацию, но не понял одну штуку. Когда мы пользуемся функцией printf(), то можем написать код...

Указатель this - C++
Здравствуйте! Пишу на vb и delphi, решил изучить C++ с нуля. Учу в среде C++ Builder XE7. Для практики решил написать простейшее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
15.08.2012, 10:54     Указатель this #13
Цитата Сообщение от ValeryS Посмотреть сообщение
Я и показал для MFC
Я всего лишь высказался по поводу общей постановки вопроса
Yandex
Объявления
15.08.2012, 10:54     Указатель this
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru