65,190
社区成员




class Exception
{
public:
Exception(const char *format, ...)
{
va_list ap;
va_start(ap, format);
snprintf(_message, EXCEPTION_ERROR_MESSAGE_MAX_SIZE, format, ap);
va_end(ap);
}
inline virtual const char *getMessage() { return _message; }
private:
char _message[EXCEPTION_ERROR_MESSAGE_MAX_SIZE];
};
class OpenFailed: public Exception
{
public:
OpenFailed(const char *format, ...): Exception(format, ...)
{
}
};
#include <iostream>
using namespace std;
struct base_t
{
template <typename T, typename ... Ts>
base_t (T t, Ts ... ts)
{
std::cout << "base_t :: base_t ()" << std::endl;
}
};
struct derived_t : base_t
{
template <typename T, typename ... Ts>
derived_t (T t, Ts ... ts) : base_t(t,ts...)
{
std::cout << "derived_t :: derived_t ()" << std::endl;
}
};
int main ()
{
derived_t d(1,1.,'a');
return 0;
}
class Base {
public:
Base (void);
Base (const char *str, ...); // <-- this would call Init()
protected:
void Init (va_list args);
};
class Derived : public Base {
public:
Derived (const char *str, ...) {
// call's Base Init with va_list...
va_list args;
va_start(args, str);
Init(args);
va_end(args);
}
};