From 263bcc9bf4b4a1078e8dc8071e12ac594c187428 Mon Sep 17 00:00:00 2001 From: Jean-Marie HENAFF Date: Fri, 25 Feb 2022 17:32:22 +0100 Subject: [PATCH 1/2] Make dtor of Trackable and Trackable2D non default These class must have virtual method with an implementation in the cpp file in order to be able to use dynamic-cast. fix SolarFramework/SolARUnityPlugin#5 --- interfaces/datastructure/Trackable.h | 4 ++-- interfaces/datastructure/Trackable2D.h | 4 ++-- src/datastructure/Trackable.cpp | 3 +++ src/datastructure/Trackable2D.cpp | 4 ++++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/interfaces/datastructure/Trackable.h b/interfaces/datastructure/Trackable.h index 6d70ed63..bece77e8 100644 --- a/interfaces/datastructure/Trackable.h +++ b/interfaces/datastructure/Trackable.h @@ -56,9 +56,9 @@ class SOLARFRAMEWORK_API Trackable Trackable(const std::string & url); /// - /// @brief Trackable default destructor + /// @brief Trackable destructor /// - virtual ~Trackable() = default; + virtual ~Trackable(); /// /// @brief Returns the type of the Trackable object diff --git a/interfaces/datastructure/Trackable2D.h b/interfaces/datastructure/Trackable2D.h index 78634e27..70027693 100644 --- a/interfaces/datastructure/Trackable2D.h +++ b/interfaces/datastructure/Trackable2D.h @@ -51,9 +51,9 @@ class SOLARFRAMEWORK_API Trackable2D : virtual public Trackable { Trackable2D(const std::string & url, const float & width, const float & height); /// - /// @brief Trackable2D default destructor + /// @brief Trackable2D destructor /// - virtual ~Trackable2D() = default; + virtual ~Trackable2D(); // Class methods diff --git a/src/datastructure/Trackable.cpp b/src/datastructure/Trackable.cpp index 119a8018..1ed3b360 100644 --- a/src/datastructure/Trackable.cpp +++ b/src/datastructure/Trackable.cpp @@ -27,6 +27,9 @@ Trackable::Trackable(const std::string & url) : m_url(url) { LOG_DEBUG("Trackable constructor with url = {}", url); } +Trackable::~Trackable() +{} + std::string Trackable::getURL() const { return m_url; } diff --git a/src/datastructure/Trackable2D.cpp b/src/datastructure/Trackable2D.cpp index e23a4821..275a88e9 100644 --- a/src/datastructure/Trackable2D.cpp +++ b/src/datastructure/Trackable2D.cpp @@ -39,6 +39,10 @@ Trackable2D::Trackable2D(const std::string & url, m_size.height = height; } +// destructor +Trackable2D::~Trackable2D() +{} + // Class methods Sizef Trackable2D::getSize() const { From d4672f4d6ee521a09989b385c931dfe08a9eeb35 Mon Sep 17 00:00:00 2001 From: Jean-Marie HENAFF Date: Tue, 1 Mar 2022 10:18:03 +0100 Subject: [PATCH 2/2] Use user-defined default impl for dtor of Trackable/Trackable2D --- src/datastructure/Trackable.cpp | 3 +-- src/datastructure/Trackable2D.cpp | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/datastructure/Trackable.cpp b/src/datastructure/Trackable.cpp index 1ed3b360..5fdc0d17 100644 --- a/src/datastructure/Trackable.cpp +++ b/src/datastructure/Trackable.cpp @@ -27,8 +27,7 @@ Trackable::Trackable(const std::string & url) : m_url(url) { LOG_DEBUG("Trackable constructor with url = {}", url); } -Trackable::~Trackable() -{} +Trackable::~Trackable() = default; std::string Trackable::getURL() const { return m_url; diff --git a/src/datastructure/Trackable2D.cpp b/src/datastructure/Trackable2D.cpp index 275a88e9..6e2432e3 100644 --- a/src/datastructure/Trackable2D.cpp +++ b/src/datastructure/Trackable2D.cpp @@ -40,8 +40,7 @@ Trackable2D::Trackable2D(const std::string & url, } // destructor -Trackable2D::~Trackable2D() -{} +Trackable2D::~Trackable2D() = default; // Class methods