Здравствуйте, 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(); //это третий элемент массива