2013-09-10 1 views
0

Мой вопрос заключается в том, что: , например, у меня есть два класса х и уКонструктор в C++

class X{ 
public: 
     X(int, int, string); 

private: int a; 
     int b; 
     string c; 
}; 

class Y{ 

private: X x[10]; 
} 

Мой вопрос заключается в том, что, как инициализировать этот массив 10 х объектов через конструктор Y? Список инициализаторов? Как инициализировать эти 10 объектов x в y.

+0

вы спрашиваете действительно об этом или как вообще это делать? вы можете использовать вектор вместо необработанного массива, т. е. – 4pie0

+0

Допустим, что размер фиксирован, т. е. 10, и даже если я использую вектор, мне придется инициализировать все 10 объектов? –

+0

Вам нужно 10 объектов, заданных один за другим? или 10 точно таких же объектов? – 4pie0

ответ

6

В C++ 03 вы не можете этого сделать.

В C++ 11, как это:

class Y 
{ 
private: 
    X x[3]; 
public: 
    Y() 
    : x { X(1, 2, "a"), X(2, 3, "b"), X(3, 4, "c") } 
    { 
    } 
}; 

В качестве альтернативы вы можете сказать:

: x { {1, 2, "a"}, {2, 3, "b"}, {3, 4, "c"} } 
+0

очень просто и ясно –

+0

'std :: array' и вспомогательная функция также позволяют в C++ 03, не так ли? –

+1

@BenVoigt '' - это заголовок C++ 11, не так ли? –