目前,我正在学习C ++,现在正在实现一个示例程序以进行异常处理。主程序实现具有任意基数的数字系统。我用函数nums_exception : public std::exception
]创建了一个类virtual const char *what();
nsys_exception::nums_exception(Nums *obj, std::string errortext)
: errortext(errortext)
, obj(obj)
{
}
现在我派生了nums_bad_digit
,它应该像这样(伪代码):
nums_bad_digit::nums(Nums *obj, uint base, char digit)
: nsys_exception(obj, "'digit' not in alphabet for base 'obj->getBase()'")
, base(base)
{
}
所以,我想构造一个现成的错误消息,它说明为什么我确切地抛出了此异常,然后将其传递给nums_exception
构造函数。例如,nums_bad_digit :: what()应该输出'Q'而不是以16为底的字母
。我已经尝试过类似的静态方法
inline static std::string ERRORTEXT(Nsys *obj, char digit)
{
return std::string(std::to_string(digit) + " not in alphabet for base " +
std::to_string(obj->getBase()) + '.');
}
我还尝试了一个编译器宏...但是,无论我如何尝试-将其编写为普通代码都可以。但是,当我要将字符串传递给ǹums_exception
构造函数时,它将始终得到一个空字符串。
目前,我正在学习C ++,现在正在实现一个示例程序以进行异常处理。主程序实现具有任意基数的数字系统。我做了一个nums_exception类:...
您需要将errortext
传递给std :: exception构造函数: