假设我有一个填充doubles
s的结构(或我只用于存储的类)。我创建了一个构造函数来分配给那些doubles
s:
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) {}
}
如果已经在构造函数中声明了成员,那么在类中声明成员似乎是多余的。 有没有办法减少这些冗余,以便构造函数中使用的成员自动成为类的公共成员?也可能对其他成员函数有用。
此示例类似于Programming: Principles and Practice Using C++第348页上的示例。所以这是当代既定的编码风格。 此外,我正在寻找一种现代的C ++风格解决方案,这意味着没有预处理器。
更新(1) 这个结构需要以下列方式使用:
vector<Point> points
points.push_back(t0,x0,y0)
答案 0 :(得分: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});