Избегайте вызова конструктора переменной-члена

У меня есть следующий класс C ++:

// 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());
}

Теперь я хотел бы избежать класса A для вызова любого конструктора из C m_C . Потому что в последней строке в A :: A () я в любом случае собираюсь инициализировать m_C сам, потому что сначала мне нужно подготовить m_B . Я мог бы предоставить пустой конструктор по умолчанию для класса B . Но идея не в этом.

Я уже пытался добавить m_C (NULL) в список инициализации A :: A () . Иногда это работало, иногда говорилось, что нет конструктора, принимающего NULL в качестве аргумента.

Так как я могу оставить m_C неинициализированным? Я знаю, что с указателями работает путь m_C (NULL) . И я не хочу размещать его динамически, используя new .

Любая идея приветствуется.

11
задан Goldname 17 December 2016 в 20:53
поделиться