c++ - typedef 的用例

标签 c++ frameworks typedef

在机器人框架 ROS (www.ros.org) 中,有一些类使用 typedef 定义其成员变量,我真的找不到原因。例如:

class Point : public ros::Msg
{
    public:
      typedef double _x_type;
      _x_type x;
      typedef double _y_type;
      _y_type y;
      typedef double _z_type;
      _z_type z;

    Point():
      x(0),
      y(0),
      z(0)
    {
    }
}

有人知道这件事吗?像这样定义类 Point 而不是像这样简单地定义类 Point 的原因是什么:

class Point : public ros::Msg
{
    public:
      double x;
      double y;
      double z;

    Point():
      x(0),
      y(0),
      z(0)
    {
    }
}

这个类的完整实现可以在这里找到:

https://mirror.umd.edu/roswiki/doc/diamondback/api/geometry_msgs/html/Point_8h_source.html

最佳答案

做这种事情的想法是可维护性。

如果有一天他们认为 double 不合适,但真正需要的是 super_extra_accurate_double ,它可能是也可能不是一个类,那么改变是微不足道的,如果人们避免做出假设它是一个 double (例如通过 memcpy(sizeof(double)) 而不是 memcpy(sizeof(Point::_x_type)) (当然,memcpy 是一个不好的例子,但它会为这个答案做);然后他们可以更改类型,不需要重新编写代码来处理新大小。

关于c++ - typedef 的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49947460/

相关文章:

c++ - CUDA:如何创建2D纹理对象?

c++ - C++ 标准是否定义了结构中成员函数的函数内定义是否必须具有静态链接?

c++ - Luarocks luasql-mysql 编译错误

iphone - 我可以构建一个 ARC 框架并将其用于非 ARC 项目吗?

c - 这些 struct 和 typedef 定义是什么意思?

c++ - 访问类 C++ 的所有私有(private)成员

.net - 打开.NET 4.0项目时,Visual Studio 2010错误: “Project Target Framework Not Installed”

objective-c - 关于将 Objective C 代码添加到快速动态框架的说明

c - 具有指向彼此的指针的 Typedef 结构

c++ - 适当使用 typedef 来避免 "typedef contamination"