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()
這是正確的,另外提供的c'tor'Foo(T t):tVar(){}'實際上是一個默認的c'tor,因爲它不會使用't'參數,所以它可以是完全省略(或更改爲'Foo(T t):tVar(t){}') – davka 2011-05-08 11:15:35
你也許忘記了編譯器的輸出? – 2011-05-08 10:50:12
@Ignacio你的意思是? – 2011-05-08 10:51:11
編譯器的輸出。你知道,當你試圖建立它? – 2011-05-08 10:51:56