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

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

FooDerived fd; 

這段代碼有什麼問題?這個代碼在C++中的問題是什麼

+0

你也許忘記了編譯器的輸出? – 2011-05-08 10:50:12

+0

@Ignacio你的意思是? – 2011-05-08 10:51:11

+2

編譯器的輸出。你知道,當你試圖建立它? – 2011-05-08 10:51:56

回答

6

問題是Foo沒有空的C'tor-Foo(void),而FooDerived試圖用空的C'tor初始化Foo(因爲它是默認的..)所以你會得到一個編譯錯誤,因爲編譯器不知道如何創建DerivedFoo()

+0

這是正確的,另外提供的c'tor'Foo(T t):tVar(){}'實際上是一個默認的c'tor,因爲它不會使用't'參數,所以它可以是完全省略(或更改爲'Foo(T t):tVar(t){}') – davka 2011-05-08 11:15:35