我有这个函数读取内存,并返回位于指定地址的字符串(或任何类型驻留在内存中)。但我得到的错误:将模板类型名投射到uint64
error: invalid conversion from 'uint64_t to 'const char*'
我在做什么错?我以前用这种方式看过它。这里是我想要做的代码:
template<typename T>
T ReadMemory(uint64_t addr, size_t size)
{
uint64_t some_address = addr;
size_t string_size = size;
uint64_t return_value;
//store address contents into return_value using driver
//cast typename on return_value
return (T)return_value;
}
int main()
{
string foo = ReadMemory<string>(some_address,some_size);
}
首先,你可能是'std :: uintptr_t'而不是'uint64_t'? – aschepler
否定的,我使用ULONG或uint64_t。无论哪种方式,与uintptr_t发生相同的投射问题 –
铸造到一个std ::字符串是没有意义的。 –