下面的代码如何修复此代码中的语法与模板充斥?
template<typename T, typename U> class Alpha
{
public:
template<typename V> void foo() {}
};
template<typename T, typename U> class Beta
{
public:
Alpha<T, U> alpha;
void arf();
};
template<typename T, typename U> void Beta<T, U>::arf()
{
alpha.foo<int>();
}
int main()
{
Beta<int, float> beta;
beta.arf();
return 0;
}
编译失败原因为:
../src/main.cpp: In member function ‘void Beta::arf()’:
../src/main.cpp:16: error: expected primary-expression before ‘int’
../src/main.cpp:16: error: expected ‘;’ before ‘int’
如何赫克我解决这个问题?我试过了我能想到的一切。
VC8直接前缀不规范有关这一点。用VC8编写可移植代码是如此的混乱...... – 2010-07-15 16:58:27
@ale:哦,是的 - 后来从VC8移植模板很重的零件是一件非常痛苦的事情。 – 2010-07-15 17:01:09