从 std::exception 覆盖 what() 的正确方法
Correct way to override what() from std::exception
我有以下自定义异常:
#ifndef BLATT4_OUTSIDESEABOUNDS_H
#define BLATT4_OUTSIDESEABOUNDS_H
#include <exception>
namespace GameObjects {
class OutsideSeaBounds : public std::exception {
public:
[[nodiscard]] const char * what() const noexcept override;
};
}
#endif
#include "OutsideSeaBounds.h"
namespace GameObjects {
const char *OutsideSeaBounds::what() const noexcept
{
return "Das Schiff muss im Wasser liegen";
}
}
但是,我的 IDE、CLion 给了我一个警告 函数 'what' 隐藏了 class 'exception'[= 的非虚拟函数20=]。
为什么会这样?我如何 覆盖,而不是 隐藏 函数?
代码很好,你的 IDE 太傻了。
风格说明:[[nodiscard]]
在这里似乎很不合适,即使在技术上没有错误,也不会帮助任何人。
我有以下自定义异常:
#ifndef BLATT4_OUTSIDESEABOUNDS_H
#define BLATT4_OUTSIDESEABOUNDS_H
#include <exception>
namespace GameObjects {
class OutsideSeaBounds : public std::exception {
public:
[[nodiscard]] const char * what() const noexcept override;
};
}
#endif
#include "OutsideSeaBounds.h"
namespace GameObjects {
const char *OutsideSeaBounds::what() const noexcept
{
return "Das Schiff muss im Wasser liegen";
}
}
但是,我的 IDE、CLion 给了我一个警告 函数 'what' 隐藏了 class 'exception'[= 的非虚拟函数20=]。 为什么会这样?我如何 覆盖,而不是 隐藏 函数?
代码很好,你的 IDE 太傻了。
风格说明:[[nodiscard]]
在这里似乎很不合适,即使在技术上没有错误,也不会帮助任何人。