【问题标题】:Recursive template classes递归模板类
【发布时间】:2015-12-07 16:01:28
【问题描述】:

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

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<....> 

有更好的主意吗?

【问题讨论】:

  • 这里为什么需要模板?

标签: c++11 metaprogramming template-meta-programming


【解决方案1】:

抽象基类和多态怎么样?:

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_;
};

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多