Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
vladenoff
2 / 2 / 1
Регистрация: 20.10.2014
Сообщений: 13
#1

Преобразовать ссылку на класс в long int

04.02.2015, 13:17. Просмотров 340. Ответов 3
Метки нет (Все метки)

Добрый день.

Как преобразовать адрес памяти выделенной для класса в число?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
class test{
 
};
int main() {
    test *pInterface= new test;
 
    long adres;
    adres = (long)pInterface;
    cout << adres << endl;
    return 0;
}
в VS работает.

эклипс на строке преобразования выдает "cast from 'test*' to 'long int' loses precision [-fpermissive]"

Может можно как то по-другому преобразовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 13:17
Ответы с готовыми решениями:

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая...

Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С
Всем привет, как в функции my_function преобразовать ссылку на базовый класс в...

Быстрое вычисление наибольшего общего делителя для unsigned long long int
Даны два числа типа unsigned long long int, в них могут оказаться любые...

Работа с unsigned long long int на 32-битных системах
В программе испольуется тип данных unsigned long int, но в некоторых (хотя и...

Максимальная и минимальная цифра числа long long int
Доброго времени суток! Подскажите, пожалуйста, как с помощью цикла (while, do...

3
Evg
Эксперт CАвтор FAQ
19278 / 7135 / 528
Регистрация: 30.03.2009
Сообщений: 19,976
Записей в блоге: 30
04.02.2015, 13:31 #2
То, что выдаёт эклипс должно быть предупреждением, а не ошибкой. Смысл предупреждения такой, что адрес занимает больше бит, чем long, а потому при преобразовании старшие биты могут потеряться. Наверное там идёт работа в варианте адрес 8-байтный, а long 4-байтный. Это можно выяснить достоверно, запустив программу:

C++
cout << sizeof(pInterface) << endl;
cout << sizeof(adres) << endl;
Но по хорошему для таких операций вместо типа long надо использовать тип size_t или uintptr_t. Этот тип настроен в соответствии с размером указателя

http://www.viva64.com/ru/a/0050/
1
Enno
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
04.02.2015, 13:35 #3
Если волнуют предупреждения, то можно их заглушить с помощью #pragma warning(disable: номер_предупреждения)
1
vladenoff
2 / 2 / 1
Регистрация: 20.10.2014
Сообщений: 13
04.02.2015, 13:40  [ТС] #4
да, вы правы!
спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 13:40

Подскажите что за типа такой long long int?
Вопрос собственно сверху. Нигде не смог найти описания подобного типа

Перевести long long unsigned int в массив char
Подскажите, пожалуйста, как превратить число типа long long unsigned int в...

long long int и его поведение в структуре
#include &lt;iostream&gt; struct IndexBase { public: int x; int y; int z;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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