Я хочу инициализировать группу членов в классе, чтобы обеспечить чистоту исходного файла. Однако объекты принимают аргумент, который я получаю только через конструктор, и могут инициализироваться либо в списке инициализации конструктора, либо в конструкторе через присваивание. (Второй вариант, конечно, не сработает.) Это в основном сценарий:
В заголовке
class Foo
{
public:
Foo(Pointer * ptr);
private:
Pointer * ptr;
Member m1{ptr, "SomeText"};
Member m2{ptr, "SomeOtherText"};
}
В CPP
Foo::Foo(Pointer*ptr) :
ptr(ptr)
{
// ...
}
Теперь возникает вопрос: говорит ли стандарт что-нибудь о порядке инициализации между ptr
и m1
/ m2
? Очевидно, этот код будет работать только тогда, когда ptr
инициализируется до m1
и m2
.