递归模板 类

Recursive template classes

我有两个 类 需要保持彼此的引用如下:

template <typename S>
class H { 
public:
  H(const S& s): s_{s} {}
private:
  const S& s_;
}

然后

template <typename H>
class S { 
public:
  S(const H& h): h_{h} {}
private:
  const H& h_;
}

我无法定义像

这样的东西
Service<ItsHandler<Service<....> 

有更好的主意吗?

Abstract base 类 和多态性如何?:

class baseHandler {
public:
    virtual func1() = 0;
    virtual ~baseHandler() = 0;
};

template <typename S>
class H : public baseHandler {
public:
  H(const S& s): s_{s} {}
private:
  const S& s_;
};

//template <typename H>
class S {
public:
  S(const baseHandler& h): h_{h} {}
private:
  const baseHandler& h_;
};