class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Я вважаю, що причина полягає в тому, що масиви можна ініціалізувати лише з =
синтаксису, тобто:
int arr[3] = {1,3,4};
Запитання
- Як я можу робити те, що хочу зробити (тобто ініціалізувати масив у конструкторі (не призначаючи елементи в тілі)). Чи можливо це навіть?
- Чи говорить С ++ 03 щось особливе про ініціалізацію агрегатів (включаючи масиви) в ініціалізаторах ctor? Або недійсність наведеного вище коду є наслідком деяких інших правил?
- Чи вирішують проблему C ++ 0x списки ініціалізаторів?
PS Будь ласка, не зазначайте вектори, boost :: масиви та їх перевагу над масивами, про які я добре знаю.