从 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]] 在这里似乎很不合适,即使在技术上没有错误,也不会帮助任何人。