Re: C++ in-class member initialization
On 5/17/2011 10:25 AM, Syron wrote:
m_v2 will be 3 as Foo::Foo calls the parametrized (is that a word?)
Yes, it's a word. I usually put an extra 'e' after the 't'.
constructor of the in-class initializer class, whereas m_v1 will be
default-constructed. This allows default values with optional
initialization with other values.
Regarding the references: These are in my opinion pitfalls, as the
referenced data object may get destroyed while the referencing member
still exists - by the way, I think shared_ptr is much better for
referencing than using raw references as class members, but this is only
a side note and should not matter in this topic.
For the simple types: No, not only simple types, you could use every
type that supports either an implicit constructor [1] or a
copy-constructor [2], e.g.:
INCLASS_INIT(std::string, s1, "Hello"); // 1
INCLASS_INIT(std::string, s2, std::string("World")); // 2
And finally, the curly braces... I have tested my concept on FreeDOS
using DJGPP with only one single source file, this was only a
copy-and-paste of the inline declared constructor...
[hopefully this will not end as a top-posted reply, still haven't found a good news server]
That ended up as a free-standing post, not a reply to anything.
Nevertheless, thanks for taking time to reply.
So, all that elaborate mechanism is to avoid putting those members in
the initialization list[s] with given values? <shrug>
When I said "simple types", I meant types that [usually] support those
c-tors you've named (implicit c-tor, copy c-tor). IOW, not for any type
I can imagine. Again, <shrug>.
You still haven't answered my question: what's the point? What problem
were you solving?
V
--
I do not respond to top-posted replies, please don't ask