【发布时间】:2016-05-09 11:44:38
【问题描述】:
有没有办法初始化具有用户定义构造函数的类的所有数据成员?
class CTest
{
private:
int a = 0;
BYTE b; CHAR* c; int d; int e; int f; int g;
public:
CTest() b:(0)
{
c = 0;
}
};
假设我的班级有 100 个数据成员,我想将它们全部初始化为零。
一个接一个地做并不是最优的。我现在使用的解决方法是:我将所有这 100 个数据成员放在一个结构中,该结构是我的类的基础
喜欢
class : public base_with_all_members
当我想重置所有成员时,我只需在构造函数或initialize() 函数中执行以下操作。
*dynamic_cast<base_with_all_members*>(this) = {};
正确清除所有成员。
【问题讨论】:
-
我的意思是:*dynamic_cast
(this) = {}; -
为什么你的班级一开始就有这么多成员?听起来是个坏主意。
-
我第二个 @BaummitAugen 的评论。具有这么多成员的类是不可维护的设计。你刚刚遇到了第一个方面。与其寻找技术解决方案,不如考虑另一种设计。
-
@Jose 如果是这样,那么您应该在问题中提到所有这些要求。
-
我赞同前面的人所说的话。您那时不太了解C++这一事实没有理由不重构现在。
标签: c++