C++ 头库循环依赖项
我一直在开发一个简单的只包含标题的库,但我遇到了一个循环问题,我无法理解。我按类型返回,prob没有帮助C++ 头库循环依赖项,c++,templates,dependencies,C++,Templates,Dependencies,我一直在开发一个简单的只包含标题的库,但我遇到了一个循环问题,我无法理解。我按类型返回,prob没有帮助 template<typename T> class Foo; class Bar; class Baz { public: template<typename T> T getAFoo<T>() { return Foo<T>(); } Bar getABar() // Prefer re
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;
};
模板
Foo类;
分类栏;
Baz类
{
公众:
模板
T getAFoo()
{
返回Foo();
}
Bar getABar()//在这种情况下更喜欢按类型返回。
{
返回条();//错误。
}
};
模板
福班{
/* ... */
void doSomething(){m_baz.something();}
巴兹&穆巴兹;
};
分类栏{
/* ... */
void doSomething(){m_baz.something();}
巴兹&穆巴兹;
};
我尝试对函数Bar getABar()
进行原型化,然后在Bar
定义之后对其进行定义,但这只会产生重复的符号错误
有点觉得我只需要它是一个没有价值的模板。我也很抱歉。这个怎么样:
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);
}
模板
Foo类;
分类栏;
Baz类
{
公众:
模板
T getAFoo()
{
返回Foo();
}
使某物无效(){}
内联栏getABar();
};
模板
福班{
/* ... */
void doSomething(){m_baz.something();}
巴兹&穆巴兹;
};
分类栏{
公众:
酒吧(巴兹和巴兹)
:m_baz(baz)
{
}
/* ... */
void doSomething(){m_baz.something();}
巴兹&穆巴兹;
};
Bar Baz::getABar()
{
返回条(*本条);
}
你应该考虑这个线程。对不起,我应该提到FoO和Bar需要使用BAZ。因此,我们需要的不仅仅是它们的尺寸。我已经更新以在问题中反映这一点。@PhilCK,我已经修改了它。