在构造函数中使用类成员时的C ++未定义引用

是的科学

我对C ++相当陌生,所以这个问题听起来很愚蠢,但是即使我搜索了很长时间,也找不到答案。我正在使用ROS环境,但是我的问题应该是一般的C ++问题,因此我决定将其发布在这里。

我有两个密码

1)

ros::Duration max_storage_time = ros::Duration().fromNSec(1ULL * 1000000000LL);
tf::TimeCache odometryCache(max_storage_time);

2)

tf::TimeCache odometryCache(ros::Duration max_storage_time = ros::Duration().fromNSec(1ULL * 1000000000LL));

第二个编译,而第一个不编译。在我看来,似乎是完全一样的。第一个代码的错误是:未定义的引用tf::TimeCache::TimeCache(ros::Duration)

可以在以下网址找到tf :: TimeCache的文档:http://docs.ros.org/jade/api/tf/html/c++/classtf_1_1TimeCache.html#acca87a70aeb9c3573cdbfec26f6bfe23

有人可以告诉我我想念的东西吗?代码段之间的区别在哪里?为什么第一个不编译?

提前致谢!

莫尔布德尼洛

问题是您没有与ROS库正确链接。
解决方案是正确设置链接器。

只有第一个实际上调用了任何ROS函数-第二个声明了一个函数,该函数采用aros::Duration并返回a tf::TimeCache(这被称为“最令人烦恼的解析”)。

如果您从不尝试使用odometryCache,第二个不会造成任何问题。
如果您这样做(例如,odometryCache.clearList()),则编译器将抱怨您试图访问非聚合类型的成员,或类似的内容。

如果您不尝试命名构造函数的参数:

tf::TimeCache odometryCache(ros::Duration().fromNSec(1ULL * 1000000000LL));

它将编译,但链接将像第一部分一样失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:对构造函数的未定义引用

来自分类Dev

对定义的构造函数的“未定义引用”

来自分类Dev

对定义的构造函数的“未定义引用”

来自分类Dev

未定义对类的引用

来自分类Dev

C ++未定义的引用

来自分类Dev

未定义对模板成员函数的引用

来自分类Dev

构造函数中的未定义引用

来自分类Dev

对已定义函数的未定义引用

来自分类Dev

未定义对函数的引用?C ++

来自分类Dev

未定义对函数c的引用

来自分类Dev

未定义的函数引用(C ++)

来自分类Dev

C ++:对void函数的未定义引用

来自分类Dev

对C ++中函数的未定义引用

来自分类Dev

对C ++中函数的未定义引用

来自分类Dev

使用未定义的引用运行函数

来自分类Dev

对模板基类的成员函数的未定义引用

来自分类Dev

在C ++中使用库时“未定义的引用”

来自分类Dev

在C ++中使用库时出现“未定义的引用”

来自分类Dev

C ++对动态创建的类成员的功能的未定义引用

来自分类Dev

类c ++中的静态成员未定义引用

来自分类Dev

C ++中对类成员的“未定义”引用

来自分类Dev

Smalltalk引用尚未定义的类

来自分类Dev

未定义对类方法的引用

来自分类Dev

如何引用尚未定义的类?

来自分类Dev

CMake 对类的未定义引用

来自分类Dev

未定义对函数调用的引用?

来自分类Dev

未定义对函数send的引用

来自分类Dev

未定义对swscale函数的引用

来自分类Dev

未定义对'gnutls _...'函数的引用