Возможно ли в C++ передать переменные аргументы в базовый конструктор?Передать переменный аргумент в базовый конструктор в C++
Я мог бы просто скопировать код базового конструктора в производный класс, обработать список аргументов переменных там, но это приведет к нежелательному дублированию кода.
Это то, что я пытался до сих пор:
class A{
public:
A(const char * fmt,...){
va_list ap;
va_start(ap, fmt);
vprintf(fmt,ap);
va_end(ap);
};
};
class B: public A{
public:
B(const char * fmt,...):A(fmt){;};
};
int main(){
B("%d\n",42);
}
Но конструктор не передает переменные аргументы в конструктор базового класса.
Связанных, вы пробовали использовали C++ VARIADIC аргументов шаблона вместо старая школа va_stuff? – WhozCraig
Для C-эллипса у вас есть вариант передать 'va_list', поскольку' printf' имеет экземпляр 'vprintf'. Для C++ просто используйте вариационный шаблон. – Jarod42