У меня есть класс, который содержит вектор определенного типа, и я хочу дать ему вариационный конструктор, который добавляет элементы к вектору.Как остановить проверку вариационных аргументов
class MyClass
{
std::vector<int> numbers;
MyClass(int &x...)
{
va_list args;
va_start(args, x);
while(/*some condition, I'm not sure*/)
{
numbers.push_back(va_arg(args, int));
}
va_end(args);
}
};
Как узнать, когда прекратить проверку аргументов? Является ли мой вариационный синтаксис даже правильным? Все, что мне нужно было сделать, это учебник по вариационным функциям на cppreference.com.
Простой ответ: вы не можете знать. Вот почему у вас должна быть схема какого-то определения последнего элемента. Либо значением дозорного, либо другим параметром, который сообщает вам количество аргументов, либо использует метод, который использует 'printf', и это строка формата описывает параметры, которые нужно искать. – PaulMcKenzie
Возможно, что-то вроде: 'MyClass (int num_of_args, int & ...)'? –
@RemyLebeau Я даже не думаю, что вы можете иметь ссылочный аргумент как параметр перед '...'. – PaulMcKenzie