如何在C ++中使用模板?

时间:2013-05-09 18:11:02

标签: c++ templates types

我希望在A类中使用具有默认参数l的模板,但该程序会产生错误:

class B {
 public:
  B(){
  ...
  }
}

template <int l = 1>
class A {
    public: 
  A(const B& b){
  ...
  }
}

int main(){
  B b;

  A(b) a; // error: missing template arguments before '(' token
  A<5>(b) a;    // error: expected ';' before 'a'
} 

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:3)

试试这个

A<> a(b);
A<5> a(b);

答案 1 :(得分:1)

仅仅因为它是一个模板化的类不会改变初始化语法:

  A<5> a(b);

使用默认参数:

  A<> a(b);

答案 2 :(得分:1)

尝试     A&LT;&GT; A(B); 获得默认值。

答案 3 :(得分:1)

你的课程定义后需要一个分号。

答案 4 :(得分:0)

A是一个模板,因此无论是否提供默认值,您都必须提供模板括号。

A<> a(b);

如果您不想使用模板括号,可以使用typedef声明来避免它:

typedef A<> X;

您遇到的其他错误是由于您未使用分号结束类定义。

这是一个有效的工作程序 - http://ideone.com/occE71#view_edit_box