From c3ea5a78860bb0f6d7409b4909e3ee5a2ee2a559 Mon Sep 17 00:00:00 2001 From: Alexander Afanasyev Date: Thu, 12 Feb 2015 20:14:16 -0800 Subject: [PATCH] rib: Use only a forward declaration of RibManager in the header of Nrd class Change-Id: I8a681dc9a75ac8cdabc289e685ec6a505cfb5aac --- rib/nrd.cpp | 7 +++++++ rib/nrd.hpp | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/rib/nrd.cpp b/rib/nrd.cpp index be1f527b..b4ff2764 100644 --- a/rib/nrd.cpp +++ b/rib/nrd.cpp @@ -52,6 +52,13 @@ Nrd::Nrd(const ConfigSection& config, ndn::KeyChain& keyChain) { } +Nrd::~Nrd() +{ + // It is necessary to explicitly define the destructor, because some member variables + // (e.g., unique_ptr) are forward-declared, but implicitly declared destructor + // requires complete types for all members when instantiated. +} + void Nrd::initialize() { diff --git a/rib/nrd.hpp b/rib/nrd.hpp index fda116bf..e861422c 100644 --- a/rib/nrd.hpp +++ b/rib/nrd.hpp @@ -28,7 +28,6 @@ #include "common.hpp" #include "core/config-file.hpp" -#include "rib-manager.hpp" #include #include @@ -37,6 +36,8 @@ namespace nfd { namespace rib { +class RibManager; + /** * \brief Class representing NRD (NFD RIB Manager) instance * This class can be used to initialize all components of NRD @@ -68,6 +69,11 @@ public: */ Nrd(const ConfigSection& config, ndn::KeyChain& keyChain); + /** + * \brief Destructor + */ + ~Nrd(); + /** * \brief Perform initialization of NFD instance * After initialization, NFD instance can be started by invoking run on globalIoService