0

假设我有一个用doubless 填充的结构(或我仅用于存储的类)。我创建了一个构造函数来分配给那些doubless:

struct Point {
  double time;
  double x;
  double y;
  Point(double a_time, double a_x, double a_y)
    : time(a_time), x(a_x), y(a_y) {}
}

如果已经在构造函数中声明了成员,那么在类中声明成员似乎是多余的。有没有办法减少这些冗余,以便构造函数中使用的成员自动成为类的公共成员?也可能对其他成员函数有用。

此示例类似于编程:使用 C++ 的原理和实践第 348 页上的示例。所以这是当代既定的编码风格。此外,我正在寻找一种现代 C++ 风格的解决方案,这意味着没有预处理器。

更新(1) 这个结构体需要按以下方式使用:

vector<Point> points
points.push_back(t0,x0,y0)
4

1 回答 1

3

你拥有它的方式非常好。但是,如果您只想提供默认值,在 C++11 中,您可以直接初始化您的成员,并且不需要构造函数:

struct Point {
  double time = 0.0;
  double x = 0.0;
  double y = 0.0;
};

此外,看起来这个结构只是一袋数据,如果是这种情况,您还可以使用聚合初始化,它在没有 C++11 的情况下也可以工作:

示例 1

struct Point {
  double time;
  double x;
  double y;
} p = {0.0, 0.0, 0.0};

示例 2

struct Point {
  double time;
  double x;
  double y;
};

Point p1 = {0.0, 0.0, 0.0};

更新后

您可以push_back像这样使用平面数据类型:

v.push_back({t0, x0, y0});
于 2012-07-20T21:56:38.097 回答