2013-05-09 82 views
0

我希望使用在A級默認參數l模板,但程序產生錯誤:如何在C++中使用模板?

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' 
} 

我該如何解決這個問題?

+1

獲取一本C++書籍。 SO不適用於簡單的語法問題。 – 2013-05-09 18:37:17

回答

1

只是因爲它是一個模板類不改變初始化語法:

A<5> a(b); 

使用默認的參數:

A<> a(b); 
3

試試這個

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

嘗試 一個< > a(b); 獲取默認值。

1

你需要在你的類定義之後使用分號。

0

A是一個模板,所以您必須提供模板括號,而不管它是否提供了默認值。

A<> a(b); 

如果你不想使用的模板支架,你可以使用一個typedef聲明,以避免它:

typedef A<> X; 

您遇到其他錯誤是由於這樣的事實,你沒有不要用分號結束你的類定義。

這是一個工作程序 - http://ideone.com/occE71#view_edit_box