错误:使用类模板需要模板参数列表

4
当我尝试运行程序时,出现以下错误:"error C2955:'FOURTEEN':使用类模板需要模板参数列表"。
#include <iostream>
using namespace std;
template <class T, int n>
class FOURTEEN
{
private:
    T a[n];
public:
    void ReadData();
    void DisplayData();
};
void FOURTEEN::ReadData()
{
    for(int i=0;i<n;++i)
        cin>>a.[i];
}
void FOURTEEN::DisplayData()
{
    for(int i=0;i<n;++i)
        cin>>a.[i]<<'\t';
    cout<<endl;
}
int main()
{
    FOURTEEN <int, 5>P;
//Read data into array a of object P
    cout<<"Enter 5 numbers: ";
    P.ReadData();
//display data of array a of object P
    P.DisplayData();

    system("pause");
    return 0;
}

我需要在其他地方重新输入模板吗?

1个回答

5

模板类的成员本身也是由其模板类参数化的模板。当这样的成员在其类外部定义时,必须明确声明为模板。

因此,您需要进行更改。

void FOURTEEN::ReadData()

to

template <class T, int n>
void FOURTEEN<T, n>::ReadData()

请对函数DisplayData执行相同的操作。
还有一些其他错误:
在函数ReadData中,更改
cin>>a.[i];

to

cin>>a[i];

在函数DisplayData中,修改
cin>>a.[i]<<'\t';

to

cout<<a[i]<<'\t';

将 ReadData() 设为内联函数是否有帮助? - sameer karjatkar
@sameerkarjatkar 你的意思是在类的定义内部定义它吗?是的。 - songyuanyao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接