2012-06-20 115 views
1

找到相關的問題,但不是確切的變體,所以我發佈了一個非常簡單的問題。 派生類繼承自模板化基礎,我想調用基礎函數,該怎麼做?C++如何從派生類實例調用模板化的基類函數

template <class A> 
class testBase { 
public: 
    void insert(const A& insertType) { 
     // whatever 
    } 
}; 

class testDerived : testBase<double> { 
    // whatever 
}; 


int main() { 

    testDerived B; 

    // Compiler doesn't recognize base class insert 
    // How do you do this? 
    B.insert(1.0); 
} 
+0

編輯完你的問題後,你自己給出了答案,這是不適合的。我已經回到你原來的問題。 – iammilind

回答

4

需要public繼承(默認爲privateclass):

class testDerived : public testBase<double> { 
+0

謝謝,我沒有意識到它是如此愚蠢..哈哈 – user1394884

2

類有 '私人' 的默認訪問級別。你基本上繼承了使用私有繼承的'testBase',所以testBase的公共接口不是testDerived的一部分。簡單的解決方案:

class testDerived: public testBase<double> {...}; 

我真希望C++默認應用公有繼承,雖然因爲這是通常一個更常見的情況。然後,我們可以再次使用結構。 :-D

+0

非常感謝,沒有意識到這是簡單的哈哈 – user1394884

相關問題