【发布时间】:2013-03-03 07:25:42
【问题描述】:
所以,我只是想知道我们如何才能完全擦除或重置一个结构以便重复使用?
我刚刚输入了这个,给你:
typedef struct PART_STRUCT
{
unsigned int Id;
std::string Label;
} Part;
typedef struct OBJECT_STRUCT
{
std::vector< unsigned char > DBA;
std::vector< Part > Parts;
unsigned int Id;
} Object;
Object Engine;
// Initialize all members of Engine
// Do whatever with Engine
// ...
// Erase/Reset Engine value
【问题讨论】:
-
那个 typedef 是来自 C 的人工制品,它在这里没有多大作用。也只需重置自己内部的成员或编写一个方法来完成它。
-
谢谢,我不知道。
-
天啊,为什么每个人都对反对票如此满意?我 +1 这个回 0。
-
最简单的解决方案是编写一个重置所有单个成员的方法。在 C 中,当我们确定 0 或 NULL 是其所有成员可接受的初始值时,我们使用
memset(&struct_var, 0, sizeof(struct whatever))。但在 C++ 中,很难始终保持这种假设正确。 -
@Slava - 如果构造函数除了初始化值之外还打算做一些额外的事情,那么构造函数可能并不总是重置所有单个成员的解决方案。
标签: c++