2011-05-08 3 views
0
template <typename T> 
class Foo { 
    T tVar; 
    public: 
    Foo(T t):tVar() {} 
}; 

class FooDerived: public Foo<std::string> {}; 

FooDerived fd; 

이 코드의 문제점은 무엇입니까?C++에서이 코드의 문제점은 무엇입니까

+0

컴파일러 출력을 잊어 버렸습니까? –

+0

@ 이그나시오 무슨 뜻이야? –

+2

컴파일러의 출력입니다. 너, 그걸 만들려고 할 때 알아? –

답변

6

문제는 Foo에 빈 C'tor - Foo (void)가없는 반면 FooDerived는 빈 C'tor로 Foo를 초기화하려고 시도하므로 (기본값이기 때문에) 컴파일러는 DerivedFoo()를 만드는 방법을 모르기 때문에 컴파일 오류가 발생합니다.

+0

맞습니다. 또한 제공되는 'Foo (T t) : tVar() {}'는 실제로't '매개 변수를 사용하지 않으므로 실제로는 기본 매개 변수이므로, 모두 생략 (또는 'Foo (T t) : tVar (t) {}'로 변경) – davka

관련 문제