我正在尝试编写一个方便使用的构造函数类似于printf的异常类,例如:
class ExcBase
{
ExcBase(const char *fmt, ...)
{
// call things like vsprintf
}
};
但是在c中似乎没有构造的继承,所以我想编写一个继承的类,如:
class ExcChild : public ExcBase
{
ExcChild(const char *fmt, ...)
: ExcBase(fmt, ...) // XXX: how to pass the trailing parameters to the constructor?
{
}
};
或者我将不得不为所有子类编写相同的构造函数,这太烦人了……
这个问题困扰了我很多,我无法找到解决这个问题的方法……
任何信息都将是一个很大的帮助……
最佳答案 如果将复杂的工作分离为带有va_list参数的函数,则应该能够从每个子构造函数(对于每个子类型仍然必须实现)中调用它.然后你的重复代码(每个类)只是声明va_list,然后调用va_start,你的新(基本)函数和va_end.这样做有
a post here on SO个.