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: