Можно ли сделать то же самое, что и для структуры (т.е. объявить и инициализировать массив классов одновременно)?
Нет, если вы не создадите подходящий конструктор:
class BusClass
{
protected:
string m_registration_number;
string m_route;
public:
// maybe some public functions to help initialisation
// Indeed:
BusClass(string const& registration_number,
string const& route)
:m_registration_number(registration_number),
m_route(route) { }
};
Или вы делаете все члены открытыми и опускаете конструктор, и в этом случае вы можете использовать тот же синтаксис инициализации, что и для структуры. Но я думаю, что это не то, что вы хотели.
Правильно ли я считаю, что невозможно объявить и инициализировать vector<BusStruct>
или vector<BusClass>
одновременно?
Нет, это невозможно с текущим C ++. Однако вы можете использовать библиотеки, которые делают это возможным. Я рекомендую Boost.Assign для этого. Однако для этого у вашего класса должен быть конструктор, а также и ваша структура - или вам нужно создать какую-то фабричную функцию
BusStruct make_bus(string const& registration_number,
string const& route) { ... }
Если вы хотите сохранить инициализируемую структуру с помощью заключенного в скобки списка инициализаторов в других случаях.