初始化类的struct data成员

nak*_*ago 2 c++

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)

Nik*_*sov 8

首先,你不需要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)