Note that there are some explanatory texts on larger screens.

plurals
  1. POInheriting from a class with a private inner classes C++
    primarykey
    data
    text
    <p>So I have an assignment in which I need to use a rank binary tree. I've already implemented a template AVL tree (C++) a while back so I thought of using it as a basis and adding to it. Since I don't want to duplicate code and work with what I have, I thought of making a rank tree class that'll inherit from the AVL. How can I use what I have to create a template rank AVL tree? Is there a way to create an inner RankNode class and have it inherit from AVL's private Node class? </p> <pre><code>/* AvlTree class */ template&lt;typename KeyType, typename DataType&gt; class AvlTree { class AvlTreeNode; AvlTreeNode* root; int treeSize; void clearTree(AvlTreeNode* node); void updateBF(AvlTreeNode*&amp; node); //updates the BF of the nodes from the root to the given node void updateHeight(AvlTreeNode*&amp; node); //updates the height of the nodes from the root to the given node void balanceTree(AvlTreeNode*&amp; node); void rotateLeft(AvlTreeNode*&amp; node); void rotateRight(AvlTreeNode*&amp; node); void insertFrom(const KeyType&amp; key, const DataType&amp; data, AvlTreeNode*&amp; node); AvlTreeNode*&amp; findNext(AvlTreeNode*&amp; node, AvlTreeNode*&amp; current,AvlTreeNode*&amp; father); AvlTreeNode*&amp; treeNav(AvlTreeNode*&amp; node); void deleteLeaf(AvlTreeNode*&amp; node); void deleteOneSon(AvlTreeNode*&amp; node); void deleteTwoSons(AvlTreeNode*&amp; node); void removeFromTree(const KeyType&amp; key, AvlTreeNode*&amp; node); AvlTreeNode* find(KeyType key, AvlTreeNode*&amp; node); void inOrderAux(KeyType** keys, AvlTreeNode*&amp; node, int&amp; i); void inOrderRangedAux(KeyType** keys, AvlTreeNode*&amp; node, const KeyType&amp; start,const KeyType&amp; end, int&amp; i); void inOrderRangedCountAux(AvlTreeNode*&amp; node, const KeyType&amp; start,const KeyType&amp; end, int&amp; i); public: AvlTree(); virtual ~AvlTree(); //AvlTree(const AvlTree&amp; tree); DataType getData(const KeyType&amp; key); void setData(const KeyType&amp; key, const DataType&amp; data); void insert(const KeyType&amp; key, const DataType&amp; data); void remove(const KeyType&amp; key); void inOrder(int* size, KeyType** keys); //Gets all of the values in a Keyarray inorder void inOrderRanged(int* size, KeyType** keys,const KeyType&amp; start,const KeyType&amp; end); bool exists(const KeyType&amp; key); } ; /* AvlTreeNode class */ template&lt;typename KeyType, typename DataType&gt; class AvlTree&lt;KeyType,DataType&gt;::AvlTreeNode { KeyType key; DataType data; int bf; int height; //The subtree's height AvlTreeNode* left; AvlTreeNode* right; AvlTreeNode(KeyType key, DataType data, AvlTreeNode* left = NULL, AvlTreeNode* right = NULL):key(key), data(data), bf(0),height(0), left(left), right(right){} ~AvlTreeNode(){} friend class AvlTree&lt;KeyType, DataType&gt;; }; </code></pre> <p>Edit: I've found the answer I was looking for. The code I needed looks like this:</p> <pre><code>template&lt;typename T&gt; class A{ protected: class B{ }; }; template&lt;typename T&gt; class C : A{ protected: class D :A&lt;T&gt;::B{ }; }; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload