Конструктор делегата C++ с некоторой работой, сделанной заранее

Я пытаюсь сделать что-то вроде

class A {
    A();
    A(int num);
}

A::A()
{
    int i = /* Something that loads something */
    A(i);
}

A::A(int num)
{
    /* something involving num */   
}

Мне известны делегированные конструкторы в C++ 11, и меня интересует, возможно ли что-то сделать до вызова делегированного конструктора.

Кроме того, не связано, но есть this доступно в списке инициализатора?

1 ответ

Решение

Некоторые альтернативы:

Аргумент по умолчанию:

struct A { 
  explicit A(int i = load_something());
};

Отложенный конструктор:

struct A { 
  explicit A(int i);
  A() : A(load_something()) {}
};
Другие вопросы по тегам