模板向量函数用gcc 4.8.1编译

时间:2014-07-09 13:42:42

标签: templates gcc vector makefile

我有这些例程可以使用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;

但两者都是错误的

这里发生了什么?来自相同代码的错误

提前谢谢!

1 个答案:

答案 0 :(得分:0)

typename与此无关。它只应用于依赖名称。

通过删除typename并添加#include,它应该编译(但不是链接,因为没有main)。