1 / 1 / 1
Регистрация: 15.08.2015
Сообщений: 9
1

Преобразование типов

15.08.2015, 16:03. Показов 413. Ответов 7
Метки нет (Все метки)

Здравствуйте! Подскажите как преобразовать тип данных: World в double вот код DLL которую я пишу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
 
#define DLLEXPORT extern "C" __declspec(dllexport)
 
class Chunk{
    double x, y, z;
    bool Cell[4096];
    Chunk *NextChunk;
};
 
class World{
    Chunk *StartChunk;
};
 
DLLEXPORT double gmvCreateWorld(){
    World *p = new World;
 
    return p;
}
Собственно говоря как содержимое указателя "p" перевести в тип double
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2015, 16:03
Ответы с готовыми решениями:

Преобразование типов
Какое значение примет переменная x после выполнения следующего фрагмента программы при значениях...

Преобразование типов.
Подскажите как правильно преобразовать типы в следующем фрагменте: int i; i=GetKeyboardType(0);...

Преобразование типов
Как понять выражение x=(int) y/z; применение типа (int) при значениях y=78, z=25? = 3.12...

Преобразование типов
Кто знает, если определено преобразование struct в double, как преобразовать struct * в double *?

7
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
15.08.2015, 16:11 2
Цитата Сообщение от gadmaker Посмотреть сообщение
World в double
А как тебе надо? У тебя там 3 double и ещё 4кБ булов. Какой из них тебе в double перевести?
Цитата Сообщение от gadmaker Посмотреть сообщение
содержимое указателя "p"
У тебя там целочисленный указатель. Интерпретация целочисленного как дробного будет некорректной.
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
15.08.2015, 16:16 3
Enno, почему это? :D
C++
1
return static_cast<double>(reinterpret_cast<int>(s));
gadmaker, eсли сам объект в double - пишите перегруженный вариант операции double() (в Интернет найдете все). Если адрес, хранимый в указателе — выше, хоть и ума не приложу, зачем вам это
0
Enno
15.08.2015, 16:22
  #4

Не по теме:

Цитата Сообщение от tnk500 Посмотреть сообщение
Enno, почему это? :D
Да я в голове указатель int к указателю double начал приравнивать.

0
1 / 1 / 1
Регистрация: 15.08.2015
Сообщений: 9
15.08.2015, 16:29  [ТС] 5
tnk500

return static_cast<double>(reinterpret_cast<int>(s));
Верно, то что нужно! Подскажите еще как выполнить обратную процедуру т.е. double перевести в World?
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
15.08.2015, 16:42 6
gadmaker, лучше сказать, никак.
Лекция о том, почему этого нельзя делать
Видели ли вы картотеку, в которой 25 целых 643 тысячных ящика, или супермаркет, в котором 20 с половиной ящиков для покупателей? Память в типичном компьютере хранится в виде целых байтовых ячеек, если уж сильно упрощать. Поэтому при инициализации указателя можно пользоваться только целочисленным типом. Но даже если примените int, это все равно опасно, потому что память под любую переменную должна быть выделена. К тому же значение, которое вы хотите присвоить указателю, может быть адресом очень важной области памяти, изменение которой запрещено/фатально для всей системы. Лекция окончена.

Если лекция не изменила вашего мнения, то
Вот так
C++
1
World* abc = reinterpret_cast<World*>(static_cast<int>(some_double));
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.08.2015, 16:45 7
Цитата Сообщение от gadmaker Посмотреть сообщение
как содержимое указателя "p" перевести в тип double
И, главное, зачем?
0
1 / 1 / 1
Регистрация: 15.08.2015
Сообщений: 9
15.08.2015, 17:47  [ТС] 8
tnk500 спасибо за быстрый ответ!

Добавлено через 29 минут
Дело в том, что другого способа я придумать не могу! Классов World может быть любое количество, при этом информацию о них можно хранить только в типе Double или PChar.
Можно попробовать так:
C++
1
 World *W[int(w_double)];
Но массивы вроде не очень удобно использовать, лучше прежде чем вносить изменения в класс World делать какую нибудь проверку (содержимое double действительно ссылается на класс World), только как это реализовать не знаю!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2015, 17:47

Преобразование типов
Возможно ли преобразовать vector &lt;Transport_Vehicle*&gt; Cars_for_transportation в vector &lt;MotorCar*&gt;...

Преобразование типов
Всем доброго здоровья. Не могу решить простенькую задачу, уже не знаю что делать.Суть такова нужно...

Преобразование типов
Кто знает, как преобразовать std::string в какой-либо другой тип? System::Convert не работает.

Преобразование типов
Вопрос по преобразованию строки в число , и наоборот . Например на форме расположен MaskedTextBox...

Преобразование типов
С учебника переписал код на применение структур, но возникла проблема с преобразованием типов. Вот...

преобразование типов в с++
Собственно вопрос в следующем. Распишите пожалуйста по шагам что происходит при выполнении данного...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru