[ndnSIM] Fix circular dependency for shared_ptr<Face>

This patch not needed for NFD-0.5.0+

Change-Id: I6c20fe06cf41a7437579d8b5a5a9b8d51293a86e
diff --git a/daemon/fw/face-table.cpp b/daemon/fw/face-table.cpp
index b4bda23..6c50049 100644
--- a/daemon/fw/face-table.cpp
+++ b/daemon/fw/face-table.cpp
@@ -90,7 +90,14 @@
   face->afterReceiveInterest.connect(bind(&Forwarder::startProcessInterest, &m_forwarder, ref(*face), _1));
   face->afterReceiveData.connect(bind(&Forwarder::startProcessData, &m_forwarder, ref(*face), _1));
   face->afterReceiveNack.connect(bind(&Forwarder::startProcessNack, &m_forwarder, ref(*face), _1));
-  connectFaceClosedSignal(*face, bind(&FaceTable::remove, this, face));
+
+  std::weak_ptr<Face> weakFace = face;
+  connectFaceClosedSignal(*face, [this, weakFace] {
+      shared_ptr<Face> face = weakFace.lock();
+      if (face != nullptr) {
+        this->remove(face);
+      }
+    });
 
   this->afterAdd(face);
 }