我有这些例程可以使用Mat矩阵。这些代码已经编译并无缝地工作,直到我将它们带到Ubuntu 12.04以使用' make'进行编译。我还尝试将gcc升级到v.4.8.1,但错误仍然存在
所以我来一个简单的测试代码来检查编译器的模板使用情况:
#include <stdlib.h>
using namespace std;
template <class A_Type>
class calc
{
public:
A_Type a,b;
typename vector<A_Type> arr;
A_Type multiply(A_Type x, A_Type y);
A_Type add(A_Type x, A_Type y);
A_Type arr_multi(A_Type x, A_Type y);
};
template <class A_Type>
A_Type calc<A_Type>::arr_multi(A_Type x,A_Type y)
{
//arr.clear();
//arr.push_back(x);
//arr.push_back(y);
//return arr[0]*arr[1];
a = 5; b = 10;
return a*b;
}
template <class A_Type>
A_Type calc<A_Type>::multiply(A_Type x,A_Type y)
{
return x*y;
}
template <class A_Type>
A_Type calc<A_Type>::add(A_Type x, A_Type y)
{
return x+y;
}
行创建错误是
typename vector<A_Type> arr;
我从其他地方的例子中想到了typename关键字。最初,它是
vector<A_Type> arr;
但两者都是错误的
这里发生了什么?来自相同代码的错误
提前谢谢!
答案 0 :(得分:0)
typename与此无关。它只应用于依赖名称。
通过删除typename并添加#include,它应该编译(但不是链接,因为没有main)。