クラス:C++なぜ拡張クラス内の関数のスコープを指定する必要がありますか?
template <class TYPE, class KTYPE>
class ExtAvlTree : public AvlTree<TYPE, KTYPE> {
public:
void ExtAvlTree_PrintDictionary();
void ExtAvlTree_ProcessNode (KTYPE key);
void ExtAvlTree_insertNewWord(string, int);
};
私はこれをしなければならないAvlTree内の関数を使用したい:私は範囲を指定いけない場合
template <class TYPE, class KTYPE>
void ExtAvlTree<TYPE, KTYPE>::ExtAvlTree_insertNewWord(string word, int data) {
TreeNode newWord;
newWord.key = word;
newWord.data = data;
AvlTree<TYPE, KTYPE>::AVL_Insert(newWord); //look here <--
}
を「AvlTreeを::」私はエラーを取得します:私の知識から
error: there are no arguments to 'AVL_Insert' that depend on a template parameter, so a declaration of 'AVL_Insert' must be available [-fpermissive]|
範囲を指定する必要があり、私はいけない派生クラスで基本クラスから関数を使用した場合。それが問題なら、私はコードブロック16.01 IDEを使用しています。
[、最小完全、かつ検証例]を投稿してください(http://stackoverflow.com/help/mcve)。 –
問題のコードは**テンプレート**を使用しているため、「ベース**クラス**の関数を使用する」の分析は誤解を招く可能性があります。テンプレートはクラスではありません。クラスを作成するための**パターン**です。テンプレートのインスタンス化を有効にするための一連のルールがあり、それらのルールはクラスには適用されません。 –