Самым простым способом было бы использовать std::initializer_list
:
//very shematic code, just to get the idea
class A
{
//members
};
class B
{
private:
std::vector<A*> _vec;
public:
B(std::initializer_list<A*> many_arguments):
_vec {many_arguments}
{
//do other stuff;
}
};
Смотреть онлайн!
РЕДАКТИРОВАТЬ после информациив комментариях: std::initializer_list
не волшебная палочка.Это не позволит вам сделать B::B(A*, A*, A*)
.Вместо этого вы должны использовать его одним из следующих способов:
B myObject {new A(), new A(), new A()}; //uniform initialization
B myOtherObject({new A(), new A(), new A()}); // explicit initialization with single std::initializer_list
Примечание: работа с необработанными указателями редко является хорошей идеей.Предпочитаю std::unique_ptr<A>
или std::shared_ptr<A>
необработанному указателю A*
.