私は私の質問説明するために、次の例を与える:あなたは上記の例からもわかるように可変引数と変数型を処理できるC++関数を作成する方法は?
class A
{
public:
void process(int a, int b, int c)
{
std::cout<< "int a"<<a<<std::endl;
std::cout<< "int b"<<b<<std::endl;
std::cout<< "int c"<<c<<std::endl;
}
};
class B
{
public:
void process(double a)
{
std::cout<< "double a"<<a<<std::endl;
}
};
struct ABC
{
float def;
};
class C
{
public:
void process(ABC a)
{
std::cout<< "float def in ABC"<<a.def<<std::endl;
}
};
を、class A, class B and Class C
は、関数内のすべての引数を印刷するために使用されているのと同じ機能process
を、共有しています。しかし、引数の数だけでなく、引数の種類も変わる可能性があります。引数はプライマリC++型でもよく、ユーザーが定義した複雑なクラスでもかまいません。この場合、一般的な関数process
をどのようにしてclass A, class B and Class C
で呼び出すことができますか。この
が最初のオブジェクト A :: object_name.processsを(宣言のような主機能の処理機能を使用する
これは役立つかもしれない:http://en.cppreference.com/w/cpp/language/parameter_pack – lorro
この一般的な機能は何をしますか? – melpomene