From bedb3ae361eef4ff07f91a110d931aedf4ada192 Mon Sep 17 00:00:00 2001 From: Chris Lalancette Date: Mon, 8 Oct 2018 11:02:08 -0400 Subject: [PATCH] Add virtual destructors to classes with virtual functions. (#566) This fixes the build on MacOS High Sierra and later, and is the more correct thing to do anyway. Signed-off-by: Chris Lalancette --- rclcpp/include/rclcpp/intra_process_manager_impl.hpp | 2 +- rclcpp/include/rclcpp/memory_strategy.hpp | 2 ++ rclcpp/include/rclcpp/message_memory_strategy.hpp | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rclcpp/include/rclcpp/intra_process_manager_impl.hpp b/rclcpp/include/rclcpp/intra_process_manager_impl.hpp index 48d96ae..ff8554e 100644 --- a/rclcpp/include/rclcpp/intra_process_manager_impl.hpp +++ b/rclcpp/include/rclcpp/intra_process_manager_impl.hpp @@ -45,7 +45,7 @@ public: RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(IntraProcessManagerImplBase) IntraProcessManagerImplBase() = default; - ~IntraProcessManagerImplBase() = default; + virtual ~IntraProcessManagerImplBase() = default; virtual void add_subscription(uint64_t id, SubscriptionBase::SharedPtr subscription) = 0; diff --git a/rclcpp/include/rclcpp/memory_strategy.hpp b/rclcpp/include/rclcpp/memory_strategy.hpp index aa88913..ae7f372 100644 --- a/rclcpp/include/rclcpp/memory_strategy.hpp +++ b/rclcpp/include/rclcpp/memory_strategy.hpp @@ -43,6 +43,8 @@ public: RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(MemoryStrategy) using WeakNodeVector = std::vector; + virtual ~MemoryStrategy() = default; + virtual bool collect_entities(const WeakNodeVector & weak_nodes) = 0; virtual size_t number_of_ready_subscriptions() const = 0; diff --git a/rclcpp/include/rclcpp/message_memory_strategy.hpp b/rclcpp/include/rclcpp/message_memory_strategy.hpp index fd92500..d67f12e 100644 --- a/rclcpp/include/rclcpp/message_memory_strategy.hpp +++ b/rclcpp/include/rclcpp/message_memory_strategy.hpp @@ -71,6 +71,8 @@ public: rcutils_allocator_ = allocator::get_rcl_allocator(*buffer_allocator_.get()); } + virtual ~MessageMemoryStrategy() = default; + /// Default factory method static SharedPtr create_default() {