标题库循环依赖关系

时间:2014-08-25 20:09:30

标签: c++ templates dependencies

我一直在研究一个简单的标题库,但我遇到了一个我无法想象的循环问题。我按类型返回哪个概率没有帮助。

template<typename T>
class Foo;

class Bar;


class Baz
{
public:

   template<typename T>
   T getAFoo<T>()
   {
      return Foo<T>();
   }


   Bar getABar() // Prefer return by type in this situation.
   {
      return Bar(); // Error.
   }
};

template<typename T>
class Foo {
   /* ... */
   void doSomething() { m_baz.something(); }
   Baz &m_baz;
};

class Bar {
   /* ... */
   void doSomething() { m_baz.something(); }
   Baz &m_baz;
};

我尝试对函数Bar getABar()进行原型设计,然后在Bars定义之后定义它,但只是出现了重复的符号错误。

有点觉得我只需要它就是一个没有价值的模板。

1 个答案:

答案 0 :(得分:0)

我也很抱歉。怎么样:

template<typename T>
class Foo;

class Bar;

class Baz
{
public:

    template<typename T>
    T getAFoo()
    {
        return Foo<T>();
    }

    void something(){}

    inline Bar getABar();
};

template<typename T>
class Foo {
    /* ... */
    void doSomething() { m_baz.something(); }
    Baz &m_baz;
};

class Bar {
public:
    Bar(Baz& baz)
        :m_baz(baz)
    {
    }
    /* ... */
    void doSomething() { m_baz.something(); }
    Baz &m_baz;
};

Bar Baz::getABar()
{
    return Bar(*this);
}