class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Ich glaube, der Grund dafür ist, dass Arrays nur mit =
Syntax initialisiert werden können, dh :
int arr[3] = {1,3,4};
Fragen
- Wie kann ich tun, was ich tun möchte ( dh ein Array in einem Konstruktor initialisieren (keine Elemente im Body zuweisen)). Ist es überhaupt möglich?
- Sagt der C ++ 03-Standard etwas Besonderes über die Initialisierung von Aggregaten (einschließlich Arrays) in CTOR-Initialisierern? Oder ist die Ungültigkeit des obigen Codes eine Folge einiger anderer Regeln?
- Lösen C ++ 0x-Initialisiererlisten das Problem?
PS Bitte erwähnen Sie keine Vektoren, Boost :: Arrays und deren Überlegenheit gegenüber Arrays, die mir bekannt sind.