Assuming your argument types have a class Arg, you can try the following:
class ArgUser {
public:
void method() {
doMethod();
}
void method( const Arg & a1 ) {
doMethod( &a1 );
}
void method( const Arg & a1, const Arg & a2 ) {
doMethod( &a1, &a2 );
}
private:
virtual void doMethod( const Arg * a1=0, const Arg * a2=0 ) = 0;
};
This solution has the following properties:
( ) :
class AltArgUser {
public:
void method() {
doMethod( 0, 0 );
}
void method( const Arg & a1 ) {
doMethod( &&a1, 1 );
}
void method( const Arg & a1, const Arg & a2 ) {
const Arg * args[] = { &a1, &a2 };
doMethod( args, 2 );
}
private:
virtual void doMethod( const Arg * args[], size_t numArgs ) = 0;
};
, , , . , , .