Posiadam klasę Thing
bez domyślnego konstruktora.Inicjalizacja macierzy elementów C++ bez domyślnych konstruktorów
Teraz definiujemy inną klasę, która musi teraz inicjalizować elementy tablicy jednocześnie, ponieważ bez domyślnego konstruktora nie można wykonać późnego przypisania. Mamy więc:
class TwoThings
{
public:
Thing things[2];
TwoThings() : things({Thing("thing 1"),Thing("thing 2")})
{
}
}
Czy to jest właściwy sposób?
GCC kompiluje to dobrze, podczas gdy Clang nie, należy podać "listę inicjalizującą". Próbowałem kilka alternatywnych sposobów, takich jak podwójne nawiasy klamrowe {{ ... }}
i takie, ale nie uda nam się uzyskać odpowiednika kompilacji dla Clanga.
Jak zainicjować tablice bez domyślnego konstruktora w Clang?
Więc nie ma mowy bez tego rozszerzenia lub C++ 11 (zrywa wiele moich starszych bibliotek), aby zainicjować tablicę? – dronus
Można użyć innej metody przechowywania, np. 'Std :: pair' lub 'std :: vector '. –
TartanLlama
Sądzę, że 'std :: vector' będzie potrzebował elementów posiadających domyślny konstruktor? – dronus