首页 > 解决方案 > 如何执行此函数调用

问题描述

给定两个操作数

Eigen::Quaterniond eigen_quat;  
tf::Quaternion tf_quat;

和功能

void tf::quaternionEigenToTF (const Eigen::Quaterniond &e, tf::Quaternion &t)

你如何执行函数调用?

我正在寻找一个简单的代码行,作为如何执行函数调用的示例;现在有点困惑 *,&, const 等。随意编辑问题标题。

先感谢您

标签: c++pointersreferencefunction-call

解决方案


是什么&

在函数签名中,&字符意味着它通过引用获取该参数。这很有用,因为它允许代码避免复制大值,或者因为您想修改函数中的值。例如:

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::Quaterniondby 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); 

推荐阅读