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(デフォルトはprivate) class:

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 に答える