【发布时间】:2012-07-20 21:44:39
【问题描述】:
假设我有一个用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) {}
}
如果已经在构造函数中声明了成员,那么在类中声明成员似乎是多余的。 有没有办法减少这些冗余,以便构造函数中使用的成员自动成为类的公共成员?也可能对其他成员函数有用。
此示例类似于Programming: Principles and Practice Using C++ 第 348 页上的示例。所以这是当代既定的编码风格。 此外,我正在寻找一种现代 C++ 风格的解决方案,这意味着没有预处理器。
更新(1) 该结构体需要按以下方式使用:
vector<Point> points
points.push_back(t0,x0,y0)
【问题讨论】:
-
在某些情况下你可以反过来做:www2.research.att.com/~bs/C++0xFAQ.html#member-init
-
当类有多个构造函数时,你有什么建议?
-
为什么要将构造函数中使用的类的所有成员声明为public?
-
@AdityaKumar,很高兴知道,谢谢。我的评论对这个例子没有帮助,但它很可能是你能得到的最好的。
-
@kirill_igum,如果你有 C++11,你可以考虑使用
emplace_back在后面就地构造元素。
标签: c++ templates generics boost metaprogramming