Неясно, что вы подразумеваете под преобразованием пустого указателя в целое число.Если вы намереваетесь получить доступ к указанному объекту, обратитесь к документации lua_topointer
:
. Преобразует значение с указанным допустимым индексом в общий указатель C (void *).Значением может быть пользовательские данные, таблица, поток или функция;в противном случае lua_topointer возвращает NULL.Разные объекты будут давать разные указатели. Невозможно преобразовать указатель обратно в исходное значение.
Обычно эта функция используется только для отладочной информации.
Также обратите внимание, что согласноВ цитируемой документации указанным объектом не может быть unsigned int
.
Если вы вместо этого намереваетесь представить указатель как целое число, сначала я предлагаю вам рассмотреть , почему вамхочу сделать это.Обычно это не нужно.Наиболее разумные вещи, которые могут быть выполнены с целочисленным представлением, такие как печать, могут быть выполнены непосредственно с указателем.
Но если вы действительно хотите "преобразовать" указатель в целое число,unsigned int
не является хорошим выбором, поскольку не гарантируется возможность представления всех значений, которые могут быть представлены указателем данных. std::uintptr_t
может представлять все такие значения, и это будет правильным способом преобразования:
reinterpret_cast<std::uintptr_t>(data_pointer)