c ++如何从派生类实例调用模板化基类函数

时间:2012-06-20 15:59:54

标签: c++ templates inheritance

找到相关问题但不是确切的变体,所以我发布了一个非常简单的问题。 派生类继承了模板化的基础,我想调用基函数,怎么做呢?

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);
}

2 个答案:

答案 0 :(得分:4)

需要public继承(private默认为class):

class testDerived : public testBase<double> {

答案 1 :(得分:2)

一个类的默认访问级别为&#39; private&#39;。你基本上继承了&#39; testBase&#39;使用私有继承,以便testBase的公共接口不是testDerived的一部分。简单的解决方案:

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

我希望C ++默认应用公共继承,因为这通常是一种更常见的情况。然后,我们可以改为使用结构。 :-D