Я хотел бы бросить исключения со значимым объяснением (дескриптор сокета, идентификатор процесса, индекс сетевого интерфейса, ...)!
Я думал, что использование переменных аргументов работало нормально, но в последнее время я понял, что невозможно расширить класс для реализации других типов исключений. Поэтому я решил использовать std :: ostreamstring в качестве внутреннего буфера для обработки форматирования ... но не компилируется!
Я думаю, что это имеет дело с конструкторами копирования.
В любом случае вот мой кусок кода:
<code> class Exception: public std::exception {
public:
Exception(const char *fmt, ...);
Exception(const char *fname,
const char *funcname, int line, const char *fmt, ...);
//std::ostringstream &Get() { return os_ ; }
~Exception() throw();
virtual const char *what() const throw();</p>
<p>protected:
char err_msg_[ERRBUFSIZ];
//std::ostringstream os_;
};
Конструктор переменных arguments не может быть унаследован от! вот почему я подумал о std :: ostringstream!
Любой совет, как реализовать такой подход?