传递"No/Null/0"作为参考?
Passing "No/Null/0" as a reference?
个小问题,我有这个功能
编辑:这不是我的函数,它是库的一部分。
void Input_GetMousePos(
float *x,
float *y
);
而且我只想存储 Y 值,那么我怎么会说 X 在哪里"NULL"或"我不想写任何东西"呢?
我发现的解决方法是声明一个变量,但永远不要再次使用它,就像这样
float vx, vy;
_hge->Input_GetMousePos(&vx, &vy);
然后我再也不会使用"vx"了。
所以我的问题是,有没有办法传递"NULL"或类似的东西?
也欢迎提出标题更改建议。
NULL
(和nullptr
)的要点是你可以通过它们来代替指针,所以要回答你的问题("我怎么说'NULL'"),你只需说NULL
。
_hge->Input_GetMousePos(NULL, &vy);
使用 C++11,建议您使用 nullptr
而不是 NULL
,因为它在某些边缘情况下使用模板表现得更好。否则,两者都是一样的,所以如果你对NULL
更舒服,你也可以使用它。
_hge->Input_GetMousePos(nullptr, &vy);
如果您尝试过并且它崩溃或行为不端,那么您就不走运了,并且接收 X 组件的虚拟变量与您得到的一样好。在这种情况下,传递nullptr
是惯例,因此,如果不尊重它,则无法使用此特定函数执行任何操作。但是,可能还有其他功能可以让您访问单个组件,但我们没有足够的信息来帮助解决这个问题。
好吧,首先,您不将参数作为引用传递,而是作为指针传递。像你一样使用指针,你可以只传递 NULL:
void Input_GetMousePos(float *x, float *y) {
if (x != NULL){
//you can safely dereference x
}
if (y != NULL){
//you can safely dereference x
}
}
float vy;
_hge->Input_GetMousePos(NULL, &vy);
您在问题中提到了参考文献。所以让我们也澄清一下。
通过引用传递如下所示:
void Input_GetMousePos(float &x, float &y) {
}
float vx, vy;
_hge->Input_GetMousePos(vx, vy);
在这里,参数x
和y
是引用。您不能使用NULL
或类似的东西作为参考。但是,您可以使用可选的包装器,例如 boost::optional
编辑
我编辑了我的问题,我忘了包括有问题的函数是库的一部分,而不是我自己写
的
在这种情况下,请查看函数的文档。如果它说参数是可选的,那么你可以传递 NULL,否则函数在这些地址写入并且你不能传递NULL
.您需要提供有效的地址,因此必须使用变量。
- C++错误消息*成员参考.**初学者*
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 如何在 c++ 中'NULL'字符串
- c++使用foreach使数组为null
- 参考资源文件VC++中的$(SolutionDir)
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 当使用通配符和null指针调用函数时,对输出的说明
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 如何在映射中返回null
- 为什么在运算符重载时需要参考?
- 使 \page 和 \subpage 参考 doxygen 中的方法文档
- 为什么返回 NULL 不会破坏函数?
- 构造函数中的 QQuickItem 父项 null
- 检查字符串是否"null" C++
- fopen 在 gdb 中返回 NULL
- what(): basic_string::_M_construct null not valid
- const自动参考绑定到(NULL)指针 - 实际类型是什么
- 如何测试NULL或NULLPTR的GCROOT参考
- 传递"No/Null/0"作为参考?