Sunday, 25 September 2016

C++ Structure Initialization



Is it possible to initialize structs in C++ as indicated below




struct address {
int street_no;
char *street_name;
char *city;
char *prov;
char *postal_code;
};
address temp_address =
{ .city = "Hamilton", .prov = "Ontario" };



The links here and here mention that it is possible to use this style only in C. If so why is this not possible in C++? Is there any underlying technical reason why it is not implemented in C++, or is it bad practice to use this style. I like using this way of initializing because my struct is big and this style gives me clear readability of what value is assigned to which member.



Please share with me if there are other ways through which we can achieve the same readability.



I have referred the following links before posting this question




  1. C/C++ for AIX

  2. C Structure Initialization with Variable


  3. Static structure initialization with tags in C++

  4. C++11 Proper Structure Initialization


Answer



If you want to make it clear what each initializer value is, just split it up on multiple lines, with a comment on each:



address temp_addres = {
0, // street_no
nullptr, // street_name
"Hamilton", // city

"Ontario", // prov
nullptr, // postal_code
};

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...