私の質問は、C++ 関数の引数に関連しています。場合によっては、1 つの関数がさまざまな種類の引数を受け入れることができると考えるかもしれませんが、私が考える限り、これは 2 つの方法で実現できます。1 つは C++ の新機能である関数のオーバーロード (ポリモーフィズム) を使用する方法で、もう 1 つは 'C' 関数の方法を使用する方法です。これを次の例に示します。
struct type0
{
int a;
};
struct type1
{
int a;
int b;
};
struct type2
{
int a;
int b;
int c;
};
void fun(int type, void *arg_structure)
{
switch (type)
{
case 0:
{
struct type0 *mytype = (struct type0 *)(arg_structure);
cout<<"a = "<<mytype->a<<endl;
break;
}
case 1:
{
struct type1 * mytype= (struct type1 *)(arg_structure);
cout<<"b = "<<mytype->b<<endl;
break;
}
case 2:
{
struct type2 *mytype = (struct type2 *)(arg_structure);
cout<<"c = "<<mytype->c<<endl;
break;
}
default:
break;
}
}
int main ()
{
struct type2 temp;
temp.a = 1;
temp.b = 2;
temp.c = 3;
fun(2,(void*)(&temp));
return 0;
}
私の質問は: C++ で変更可能な関数引数構造を取得する他の方法はありますか?ありがとう!