C++ 在需要定义时避免循环类依赖 模板 结构B{ Tα; }; 结构A{ B foo(){ B结果; 返回结果; } };
如何避免使用模板(请注意默认参数以查看其用法)。C++ 在需要定义时避免循环类依赖 模板 结构B{ Tα; }; 结构A{ B foo(){ B结果; 返回结果; } };,c++,templates,C++,Templates,如何避免使用模板(请注意默认参数以查看其用法)。 问题是这两个类都需要对方的定义。但是,正如模板解决方案所示,没有“真正的”循环依赖关系。您可以利用这样一个事实,即在按值返回的情况下,转发声明就足够了(就像a::foo的情况一样): 在DevStudio 2005中为我编译的很好。不要忘了模板是在使用时实例化的,而不是在声明时实例化的。是的,上面的工作是可行的。删除模板是不可行的。在测试过程中,我将foo实现保持在内联状态。我不认为这有什么关系。 template <class T=A&g
问题是这两个类都需要对方的定义。但是,正如模板解决方案所示,没有“真正的”循环依赖关系。您可以利用这样一个事实,即在按值返回的情况下,转发声明就足够了(就像
a::foo
的情况一样):
在DevStudio 2005中为我编译的很好。不要忘了模板是在使用时实例化的,而不是在声明时实例化的。是的,上面的工作是可行的。删除模板是不可行的。在测试过程中,我将foo实现保持在内联状态。我不认为这有什么关系。
template <class T=A>
struct B {
T a;
};
struct A {
B<A> foo(){
B<A> result;
return result;
}
};
struct B;
struct A {
B foo();
};
struct B {
A a;
};
B A::foo() {
B result;
return result;
}