这个原始代码,
class A {
A() :
max_(0),
num_(0),
sum_(0),
sum_squares_(0) {}
void Clear() {
min_ = bucketMapper.LastValue();
max_ = 0;
num_ = 0;
sum_ = 0;
sum_squares_ = 0;
}
void SomethingElse {}
}
由于缺少参数列表和分号,将无法编译,并且无法min_
在默认构造函数中初始化,从而使该成员具有不确定的值,并且其中的所有内容都无法访问。
你真的想赋予min_
不同的、新的价值Clear
吗?
如果不是,那么只需分配一个默认构造的实例:
*this = A();
从构造函数调用Clear
通常不是一个好主意,主要是因为它非常类似于用赋值来表达构造的不良习惯,因此可能会诱使您这样做。
对于更通用的解决方案,请排除纯数据:
namespace detail {
struct A_Data
{
double min_;
double max_;
int num_;
double sum_;
};
} // namespace detail
class A
: private detail::A_Data
{
public:
A(): detail::A_Data() {}
void clear()
{
*this = A();
min_ = bucketMapper.LastValue();
}
void somethingElse() {}
};
但最有可能
*this = A();
将作为您的需求的解决方案。
-1 表示非真实代码。请在以后的问题中发布真实代码。不像。