2015-10-08 3 views
-1

У меня есть класс F, который имеет конструктор так:Массив экземпляров с конструкторами

public: 
    F(int N){ 
    Tree = new int[N]; 
    } 

Я хочу, чтобы создать массив, содержащий 26 экземпляров F

Если конструктор не имел никаких аргументов, Я мог бы только что сделать F ArrayOfF[26]

Однако у этого конструктора есть аргумент, а что-то вдоль линий F(N) ArrayOfF[26] не работает.

Что такое хороший способ сделать это?

+4

[ 'станд :: VECTOR'] (http://en.cppreference.com/w/cpp/container/vector) – NathanOliver

+0

Вы предлагаете мне использовать зЬй :: вектор, чтобы нажимать экземпляры один за другим? Нет ли хорошего способа сделать это с помощью простых массивов? –

+1

Вы также должны использовать 'std :: vector' внутри класса для дерева ... (И std :: vector является удивительным, потому что этот' std :: vector ArrayOfF (26, F (N)) ') –

ответ

2

Один из вариантов должен быть явным:

F ArrayOfF[26] = { 
    F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(10), 
    F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(20), 
    F(1), F(2), F(3), F(4), F(5), F(6) 
}; 

std::vector является хорошим варианты.

std::vector<F> ArrayOfF(26, F(42)); 

или

std::vector<F> ArrayOfF; 
ArrayOfF.reserve(26); // Optional: to do only one allocation. 
for (int i = 0; i != 26; ++i) { 
    ArrayOfF.push_back(F(2 * i + 5)); 
} 
Смежные вопросы