C++ では、関数の引数を複数の型に定義することは可能ですか?
#include <iostream>
using namespace std;
class A {
public:
void PrintA() { cout << "A" << endl;}
};
class B {
public:
void PrintB() { cout << "B" << endl;}
};
class C: public A, public B {
public:
C(){;}
};
class D: public A, public B {
public:
D(){;}
};
///
void __printall__(A*a, B*b){
a->PrintA();
b->PrintB();
}
#define printall(a) __printall__(a,a)
///
int main(int argc, char *argv[]){
C c;
D d;
printall(&c);
printall(&d);
}
コメント間のコードをマクロを使用していないものに変更したい。型の安全性を維持したいので、ポインターのキャストを強制しません。C/D と A/B の間に別のクラスを導入することさえしません。実際には、私のクラス階層はコードに示されているものよりも少し複雑であり、A または B から派生したすべてのクラスをリベースすることは望ましくないからです。