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++可変長テンプレート引数を使用代わりに試してみました古い学校va_stuff? – WhozCraig
C-省略記号の場合、 'printf' hasは対応する' vprintf'であるので、あなたは 'va_list'を渡すバリアントを持っています。 C++の場合は、バリデーショナルテンプレートを使用してください。 – Jarod42