I have the following C++-class:
// Header-File
class A
{
public:
A();
private:
B m_B;
C m_C;
};
// cpp-File
A::A()
: m_B(1)
{
m_B.doSomething();
m_B.doMore();
m_C = C(m_B.getSomeValue());
}
I now would like to avoid the class A
to call any constructor of C m_C
. Because on the last line in A::A()
, I'm anyways going to initialize m_C
myself because I need to prepare m_B
first. I could provide an empty default constructor for class B
. But that's not the idea.
I have already tried to add m_C(NULL)
to the init-list of A::A()
. Sometimes it worked, sometimes it said there was no constructor taking NULL
as an argument.
So how can I have m_C
left uninitialized? I know that with pointers, the m_C(NULL)
-way works. And I don't want to allocate it dynamically using new
.
Any idea is appreciated.
What you ask is forbidden - and correctly so. This ensures that every member is correctly initialized. Do not try to work around it - try to structure your classes that they work with it.
Idea: