c++ - 如何执行此函数调用
问题描述
给定两个操作数
Eigen::Quaterniond eigen_quat;
tf::Quaternion tf_quat;
和功能
void tf::quaternionEigenToTF (const Eigen::Quaterniond &e, tf::Quaternion &t)
你如何执行函数调用?
我正在寻找一个简单的代码行,作为如何执行函数调用的示例;现在有点困惑 *,&, const 等。随意编辑问题标题。
先感谢您
解决方案
是什么&
?
在函数签名中,&
字符意味着它通过引用获取该参数。这很有用,因为它允许代码避免复制大值,或者因为您想修改函数中的值。例如:
void addOne(int& i) {
i += 1;
}
int main() {
int x = 10;
addOne(x); // increments x by one
std::cout << x << std::endl; // Prints 11
}
因为我们x
是引用的,所以我们x
在函数内部修改的时候,原来的值也x
被修改了。
是什么const
?
当一个变量被声明为const
时,这意味着你不能修改它。例如:
const int x = 5;
x = 6; // ERROR: can't modify a const variable
如果有const
引用,则表示它是对变量的引用,但您不能通过该引用修改变量。例如:
int x = 4;
x++; // It's fine to modify x
const int& x_ref = x; // Get a const reference to x
x_ref++; //Can't modify x_ref: x_ref is const
为什么使用 const ref 作为函数参数?
当您有一个复制成本很高的对象时,您应该使用 const 引用作为函数参数,但您要保证它不会被您传递给它的函数修改。
您提供的函数采用Eigen::Quaterniond
by const 引用,避免复制,但向用户保证该Eigen::Quaternoind
函数不会修改对象。
void tf::quaternionEigenToTF (const Eigen::Quaterniond &e, tf::Quaternion &t)
我怎么称呼它?
您可以像调用任何其他函数一样调用它:
igen::Quaterniond eigen_quat;
tf::Quaternion tf_quat;
// Call the function
tf::quaternionEigenToTF (eigen_quat, tf_quat);
推荐阅读
- json - 如何使用 jq 解析 json 对象数组
- angular - 更改组件时如何取消 HttpRequests
- javascript - Phaser:Z 排序不起作用
- django - 覆盖的创建方法未在 Django Rest Framework 中保存实例字段
- javascript - SVG绘制两个矩形之间的连接线
- laravel - 你知道为什么会出现这个错误吗?(在 null 上调用成员函数 formatLocalized())
- python - 使用 Numba 使四个嵌套的 for 循环更快
- r - ggplot图例可以自由移动到情节之外吗?
- python - 在我的项目`venv`中,`python3 manage.py runserver`会出错,但是如果我使用python3的绝对路径来执行就可以了
- http - SuperAgent -- 仅获取标题