Re[2]: Массив из объектов
От: emergen  
Дата: 12.02.15 06:26
Оценка:
Здравствуйте, kvser, Вы писали:

K>Здравствуйте, emergen, Вы писали:


E>>Добрый день! Подскажите, пожалуйста, как в С++ самым рациональным способом сделать массив из объектов одного типа, чтобы затем вызывать (работать) однотипно с одинаковыми методами объекта:


E>>...


E>>obj1 = MyObject();

E>>obj2 = MyObject();
E>>obj3 = MyObject();

E>>...


E>>for(i=0; i<3; i++)

E>>{

E>>obj[i].SetFlag();



E>>}



E>>В языке программирования Python данная конструкция выглядит следующим образом:


E>> for obj in [obj1, obj2, obj3]:

E>> obj.SetFlag()


E>>А как такое сделать в С++?


K>используя с с++11 так

K>
K>std::array<MyObject, 3> a = {MyObject(), MyObject(), MyObject()};
K>for(const auto& e: a)
K>    e.SetFlag();
K>


в данном случае на протяжении всей программы после этого цикла нужно будет обращаться к данным объектам как
std::array[0].setFlag(); //это первый элемент массива
std::array[1].setFlag(); //это второй элемент массива
std::array[3].setFlag(); //это третий элемент массива

а как сделать так чтобы обращаться по их названию? типа:
obj1.setFlag(); //это первый элемент массива
obj2.setFlag(); //это второй элемент массива
obj3.setFlag(); //это третий элемент массива
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.