[C ++继承:构造函数中的字符串构造

问题描述 投票:0回答:1

目前,我正在学习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类:...

c++ string stdstring
1个回答
0
投票

您需要将errortext传递给std :: exception构造函数:

© www.soinside.com 2019 - 2024. All rights reserved.