说实话,我真的不知道如何命名该问题。我只会显示不工作的代码:C++模板:使用模板参数分离定义和实现
template<int SIZE>
struct bar{
};
template<int SIZE>
struct foo{
template<int X>
void f(bar<X> b);
};
template<int SIZE, int X>
void foo<SIZE>::f(bar<X> b){
}
int main(){
foo<1> f;
bar<2> b;
}
我想从实现中分离定义以避免循环依赖性问题。分离仅在头文件中完成,我不想将模板代码放入cpp文件中。在这种情况下使用指针是没有选择的。重构已经被考虑过,但并不是真正的选择。
实现foo :: f没有带模板参数的参数本身工作正常。不过,我并没有真正解决这个问题。
代码应该使用gcc 4.7和(更重要的)Visual Studio 2010工作。只要提到的平台支持,C++ 11就可以。
解决方法,解决方法以及理论解释为什么我完全错误的东西将高度赞赏。 TIA。
我在发布的代码中看不到任何循环依赖项。 – Nawaz
@Nawaz:我假设有一次,由于行:*我想分开的定义从实施,以避免循环依赖问题*然后再次,正如众议院说*人们说谎*,所以你不能总是相信什么问题 –
我认为由于编译错误,他错误地得出结论,这是因为循环依赖问题(甚至不存在)。 – Nawaz