Копировать конструктор фигурных скобок инициализации
мы можем инициализировать объекты класса, для которого у нас нет определения конструктора, используя:
поэлементная инициализация.копия инициализации.инициализация по умолчанию.Например:
struct Work {
string author;
string name;
int year;
};
Work s9 { "Bethoven",
"Symphony No. 9 in D minor, Op. 125; Choral",
1824
}; // memberwise initialization
Work currently_playing {s9}; // copy initialization
Work none {}; // default initialization
Язык программирования C ++ 4-е изд. Глава 17.3.1
Например:
struct Data
{
int mMember1;
float mMember2;
char mMember3;
};
int main()
{
Data aData_1{1,0.3,33};
Data aData_2{aData_1};
return EXIT_SUCCESS;
}
Это должно работать, хотя я получаю ошибку компилятора столько же с GCC, сколько с Clang. Ошибка "невозможно преобразовать данные в int " в обоих компиляторах. Однако при реализации конструктора копирования эта ошибка исчезает или не реализуя ее, а используя синтаксис круглых скобок. Проблема немного глупая, и изменение фигурных скобок позволяет решить проблему. Но почему не соблюдаются правила TC ++ PL ?, это проблема компилятора или ям что-то недопонимаю? Заранее спасибо.