typedef struct _MY_STRUCT
{
std::string mystring;
int n1;
int n2;
} MY_STRUCT;
class foo
{
public:
foo():
m_mystruct()
{ }
private:
MY_STRUCT m_mystruct;
};
int main(void)
{
foo oFoo;
// Why doesnt this intialize all data members of foo to NULL/0.
// what is the correct way to get all members of MY_STRUCT to be intialized to NULL/0.
}
Run Code Online (Sandbox Code Playgroud)
首先,你不需要typedef在C++中这样做.其次,为您的结构创建一个默认构造函数:
struct MY_STRUCT
{
std::string mystring;
int n1;
int n2;
MY_STRUCT() : mystring(), n1(), n2() {}
};
Run Code Online (Sandbox Code Playgroud)
这样,结构成员将默认初始化为:
std::string 清空字符串(通过其默认构造函数),ints为零.以下是:
MY_STRUCT ms;
assert( ms.mystring.empty());
assert( ms.n1 == 0 );
assert( ms.n2 == 0 );
Run Code Online (Sandbox Code Playgroud)