1

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

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

2 回答 2

4

需要public继承(默认privateclass):

class testDerived : public testBase<double> {
于 2012-06-20T16:03:13.840 回答
2

一个类的默认访问级别为“私有”。您基本上使用私有继承继承了“testBase”,因此 testBase 的公共接口不是 testDerived 的一部分。简单的解决方案:

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

我确实希望 C++ 默认应用公共继承,因为这通常是更常见的情况。话又说回来,我们都可以使用结构来代替。:-D

于 2012-06-20T16:03:38.163 回答