diff --git a/CMakeLists.txt b/CMakeLists.txt index 96286bcbe6..a59c028bff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -594,7 +594,7 @@ endif() if (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang) - set(OPENMW_CXX_FLAGS "-Wall -Wextra -Wundef -Wextra-semi -Wno-unused-parameter -pedantic -Wno-long-long ${OPENMW_CXX_FLAGS}") + set(OPENMW_CXX_FLAGS "-Wall -Wextra -Wundef -Wextra-semi -Wno-unused-parameter -pedantic -Wno-long-long -Wnon-virtual-dtor ${OPENMW_CXX_FLAGS}") add_definitions( -DBOOST_NO_CXX11_SCOPED_ENUMS=ON ) if (APPLE) diff --git a/apps/openmw/mwgui/statswatcher.hpp b/apps/openmw/mwgui/statswatcher.hpp index 639e1bf591..da49eed10b 100644 --- a/apps/openmw/mwgui/statswatcher.hpp +++ b/apps/openmw/mwgui/statswatcher.hpp @@ -15,6 +15,8 @@ namespace MWGui class StatsListener { public: + virtual ~StatsListener() = default; + /// Set value for the given ID. virtual void setValue(std::string_view id, const MWMechanics::AttributeValue& value) {} virtual void setValue(std::string_view id, const MWMechanics::DynamicStat& value) {} diff --git a/apps/openmw/mwphysics/raycasting.hpp b/apps/openmw/mwphysics/raycasting.hpp index a8257ba31d..4a56e9bf33 100644 --- a/apps/openmw/mwphysics/raycasting.hpp +++ b/apps/openmw/mwphysics/raycasting.hpp @@ -21,6 +21,8 @@ namespace MWPhysics class RayCastingInterface { public: + virtual ~RayCastingInterface() = default; + /// Get distance from \a point to the collision shape of \a target. Uses a raycast to find where the /// target vector hits the collision shape and then calculates distance from the intersection point. /// This can be used to find out how much nearer we need to move to the target for a "getHitContact" to be diff --git a/components/esm3/objectstate.hpp b/components/esm3/objectstate.hpp index 996c912a83..6063a3eb87 100644 --- a/components/esm3/objectstate.hpp +++ b/components/esm3/objectstate.hpp @@ -56,9 +56,8 @@ namespace ESM virtual void save(ESMWriter& esm, bool inInventory = false) const; - virtual /// Initialize to default state - void - blank(); + /// Initialize to default state + virtual void blank(); virtual ~ObjectState(); diff --git a/components/esm4/loadland.hpp b/components/esm4/loadland.hpp index ab5abe4f90..12de4aee31 100644 --- a/components/esm4/loadland.hpp +++ b/components/esm4/loadland.hpp @@ -123,8 +123,8 @@ namespace ESM4 Texture mTextures[4]; // 0 = bottom left, 1 = bottom right, 2 = top left, 3 = top right std::vector mIds; // land texture (LTEX) formids - virtual void load(Reader& reader); - // virtual void save(Writer& writer) const; + void load(Reader& reader); + // void save(Writer& writer) const; // void blank(); }; diff --git a/components/esm4/loadsbsp.hpp b/components/esm4/loadsbsp.hpp index 29db8e9c7b..a5bbbde85a 100644 --- a/components/esm4/loadsbsp.hpp +++ b/components/esm4/loadsbsp.hpp @@ -51,8 +51,8 @@ namespace ESM4 std::string mEditorId; Dimension mDimension; - virtual void load(Reader& reader); - // virtual void save(Writer& writer) const; + void load(Reader& reader); + // void save(Writer& writer) const; // void blank(); }; diff --git a/components/lua/storage.hpp b/components/lua/storage.hpp index dcb5c2cdb8..e99fc525ff 100644 --- a/components/lua/storage.hpp +++ b/components/lua/storage.hpp @@ -42,6 +42,7 @@ namespace LuaUtil class Listener { public: + virtual ~Listener() = default; virtual void valueChanged( std::string_view section, std::string_view key, const sol::object& value) const = 0; virtual void sectionReplaced(std::string_view section, const sol::optional& values) const = 0; diff --git a/components/lua_ui/widget.hpp b/components/lua_ui/widget.hpp index 86f4529404..ffa4bc5af8 100644 --- a/components/lua_ui/widget.hpp +++ b/components/lua_ui/widget.hpp @@ -22,6 +22,9 @@ namespace LuaUi { public: WidgetExtension(); + + virtual ~WidgetExtension() = default; + // must be called after creating the underlying MyGUI::Widget void initialize(lua_State* lua, MyGUI::Widget* self); // must be called after before destroying the underlying MyGUI::Widget