2013-05-09 9 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' 
} 

나는이 문제를 해결할 수있는 방법? 부도 매개 변수를 사용

A<5> a(b); 

: 그것은 템플릿 클래스가 초기화 구문을 변경하지 않습니다이다

+1

는 C를 받기 ++ 책 - 여기

는 작업 프로그램입니다. 그래서 간단한 구문 질문을하기위한 것이 아닙니다. –

답변

3

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

이 시도하십시오 < > a (b); 기본값을 얻으려면 을 입력하십시오.

1

클래스 정의 다음에 세미콜론이 필요합니다.

0

A은 템플릿이므로 기본값이 제공되는지 여부에 관계없이 템플릿 대괄호를 제공해야합니다. 당신이 발생하는 다른 오류가 당신이 한 사실에 기인한다

typedef A<> X; 

: 템플릿 브래킷을 사용하지 않으려면

A<> a(b); 

, 당신은 그것을 피하기 위해 typedef 선언을 사용할 수 있습니다 클래스 정의를 세미콜론으로 끝내지 마십시오. http://ideone.com/occE71#view_edit_box

관련 문제