0
template <typename T>
class Foo {
T tVar;
public:
Foo(T t):tVar() {}
};
class FooDerived: public Foo<std::string> {};
FooDerived fd;
이 코드의 문제점은 무엇입니까?C++에서이 코드의 문제점은 무엇입니까
template <typename T>
class Foo {
T tVar;
public:
Foo(T t):tVar() {}
};
class FooDerived: public Foo<std::string> {};
FooDerived fd;
이 코드의 문제점은 무엇입니까?C++에서이 코드의 문제점은 무엇입니까
문제는 Foo에 빈 C'tor - Foo (void)가없는 반면 FooDerived는 빈 C'tor로 Foo를 초기화하려고 시도하므로 (기본값이기 때문에) 컴파일러는 DerivedFoo()를 만드는 방법을 모르기 때문에 컴파일 오류가 발생합니다.
맞습니다. 또한 제공되는 'Foo (T t) : tVar() {}'는 실제로't '매개 변수를 사용하지 않으므로 실제로는 기본 매개 변수이므로, 모두 생략 (또는 'Foo (T t) : tVar (t) {}'로 변경) – davka
컴파일러 출력을 잊어 버렸습니까? –
@ 이그나시오 무슨 뜻이야? –
컴파일러의 출력입니다. 너, 그걸 만들려고 할 때 알아? –