From 769a9d0439afade4f526acdc9588a8c15c88f330 Mon Sep 17 00:00:00 2001 From: Ivan Santiago Paunovic Date: Mon, 1 Jun 2020 23:58:48 -0300 Subject: [PATCH] Add missing virtual destructors (#1149) * Add -Wnon-virtual-dtor -Woverloaded-virtual compiler options Signed-off-by: Ivan Santiago Paunovic * Add missing virtual dtors Signed-off-by: Ivan Santiago Paunovic * please linter Signed-off-by: Ivan Santiago Paunovic --- rclcpp/CMakeLists.txt | 2 +- rclcpp/include/rclcpp/rate.hpp | 1 + rclcpp/include/rclcpp/timer.hpp | 1 + rclcpp_action/CMakeLists.txt | 2 +- rclcpp_components/CMakeLists.txt | 2 +- rclcpp_lifecycle/CMakeLists.txt | 2 +- .../include/rclcpp_lifecycle/lifecycle_publisher.hpp | 1 + .../node_interfaces/lifecycle_node_interface.hpp | 4 ++++ 8 files changed, 11 insertions(+), 4 deletions(-) diff --git a/rclcpp/CMakeLists.txt b/rclcpp/CMakeLists.txt index 171e0f8..4562375 100644 --- a/rclcpp/CMakeLists.txt +++ b/rclcpp/CMakeLists.txt @@ -23,7 +23,7 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) + add_compile_options(-Wall -Wextra -Wpedantic -Wnon-virtual-dtor -Woverloaded-virtual) endif() set(${PROJECT_NAME}_SRCS diff --git a/rclcpp/include/rclcpp/rate.hpp b/rclcpp/include/rclcpp/rate.hpp index 296cce1..55d3bbc 100644 --- a/rclcpp/include/rclcpp/rate.hpp +++ b/rclcpp/include/rclcpp/rate.hpp @@ -31,6 +31,7 @@ class RateBase public: RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(RateBase) + virtual ~RateBase() {} virtual bool sleep() = 0; virtual bool is_steady() const = 0; virtual void reset() = 0; diff --git a/rclcpp/include/rclcpp/timer.hpp b/rclcpp/include/rclcpp/timer.hpp index 7fc375d..66a7529 100644 --- a/rclcpp/include/rclcpp/timer.hpp +++ b/rclcpp/include/rclcpp/timer.hpp @@ -62,6 +62,7 @@ public: /// TimerBase destructor RCLCPP_PUBLIC + virtual ~TimerBase(); /// Cancel the timer. diff --git a/rclcpp_action/CMakeLists.txt b/rclcpp_action/CMakeLists.txt index 598f37a..08c4d23 100644 --- a/rclcpp_action/CMakeLists.txt +++ b/rclcpp_action/CMakeLists.txt @@ -13,7 +13,7 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) + add_compile_options(-Wall -Wextra -Wpedantic -Wnon-virtual-dtor -Woverloaded-virtual) endif() set(${PROJECT_NAME}_SRCS diff --git a/rclcpp_components/CMakeLists.txt b/rclcpp_components/CMakeLists.txt index 759e0f3..f438a2b 100644 --- a/rclcpp_components/CMakeLists.txt +++ b/rclcpp_components/CMakeLists.txt @@ -7,7 +7,7 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) + add_compile_options(-Wall -Wextra -Wpedantic -Wnon-virtual-dtor -Woverloaded-virtual) endif() find_package(ament_cmake_ros REQUIRED) diff --git a/rclcpp_lifecycle/CMakeLists.txt b/rclcpp_lifecycle/CMakeLists.txt index 66df83d..953cd0d 100644 --- a/rclcpp_lifecycle/CMakeLists.txt +++ b/rclcpp_lifecycle/CMakeLists.txt @@ -7,7 +7,7 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) + add_compile_options(-Wall -Wextra -Wpedantic -Wnon-virtual-dtor -Woverloaded-virtual) endif() find_package(ament_cmake_ros REQUIRED) diff --git a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_publisher.hpp b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_publisher.hpp index 2f94dc7..fdf9ba1 100644 --- a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_publisher.hpp +++ b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_publisher.hpp @@ -36,6 +36,7 @@ namespace rclcpp_lifecycle class LifecyclePublisherInterface { public: + virtual ~LifecyclePublisherInterface() {} virtual void on_activate() = 0; virtual void on_deactivate() = 0; virtual bool is_activated() = 0; diff --git a/rclcpp_lifecycle/include/rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp b/rclcpp_lifecycle/include/rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp index 86ebc22..9f2459e 100644 --- a/rclcpp_lifecycle/include/rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp +++ b/rclcpp_lifecycle/include/rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp @@ -100,6 +100,10 @@ public: RCLCPP_LIFECYCLE_PUBLIC virtual CallbackReturn on_error(const State & previous_state); + + RCLCPP_LIFECYCLE_PUBLIC + virtual + ~LifecycleNodeInterface() {} }; } // namespace node_interfaces