带有特定类型参数的C ++模板

时间:2017-10-20 18:12:00

标签: c++

如何拥有多个模板参数?为什么这不起作用?

template <class T, int size>
class List {
public:
    void addElement(int);
private:
    T arr[size];
};

template <class T, int size>
void List<T,int>::addElement(T n){
    arr[0] = n;
}

int main(){
    List<int,5> l;
    l.addElement(3); //example method
}

错误讯息:

main.cpp:10:16: error: type/value mismatch at argument 2 in template
parameter list for 'template<class T, int size> class List'  void
List<T,int>::addElement(T n){
                ^ main.cpp:10:16: note:   expected a constant of type 'int', got 'int' main.cpp: In function 'void addElement(T)':
main.cpp:11:5: error: 'arr' was not declared in this scope
     arr[0] = n;
     ^~~

Fromo http://coliru.stacked-crooked.com/a/4bf130e4d6ed4342

1 个答案:

答案 0 :(得分:0)

我在代码中发现了一些错误。 让我告诉你修复。

template <class T, int size>
class List {
public:
    void addElement(T); //ERROR here is T instead int
private:
    T arr[size];
};

template <class T, int size>
void List<T,size>::addElement(T n){ //ERROR here is <T,size> instead <T,int>
    arr[0] = n;
}

int main(){
    List<int,5> l;
    l.addElement(3);
}

我希望我能帮助