C++ 任何指针作为函数参数

标签 c++ function pointers arguments

这里有一些示例类来重现我面临的情况:

class A {
B* seccond;
}
class B {
int * number;
}
static NTSTATUS Read(std::uintptr_t address, size_t size, PVOID buff);

// Let's assume we have object 'obj' which has valid address of number variable

int buff;
Read(obj.seccond, sizeof(int), &buff);

Error:  cannot convert argument 1 from 'int *' to 'uintptr_t'

我知道它可以很容易地修复:

Read(std::uintptr_t(obj.seccond), sizeof(int), &buff);

但这还不够令人满意,因为它降低了代码的可读性并且很丑陋。我真的不想使用模板,因为它们已经在我的代码中随处可见。 这些变量是否有任何简单的容器?或者更优雅的方式?

编辑:我已经重新调整了问题,抱歉

最佳答案

您可以使用重载在一个地方进行转换

static NTSTATUS Read(const void* p, size_t size, PVOID buff)
{
    return Read(std::uintptr_t(p), size, buff);
}

关于C++ 任何指针作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485121/

相关文章:

c++ - 在 C++ 的预处理器指令中使用 XML

c++ - 在 Windows : Cannot open include file: 'Magick++.h' : No such file or directory 中编译 ZBar 示例时出错

function - haskell 中的函数 (.).(.)

javascript - 如何在变量中返回 while 循环的结果

c - 指针问题,数组第二个位置与另一个数组中的第一个位置相同

c++ - CPP - 使用 * 或 and 返回地址

c++ - 在asio spawn调用中 boost 与成员函数的绑定(bind)

c++ - 如何解释 - 输入 *(& variable)

c++ - 使用类的 Hangman 游戏无法正常工作

pointers - 为什么将指针分配给涉及指针的类型定义的指针是非法的?