デフォルト パラメータとして以下の関数に書き込むと、ルート変数の非静的データ メンバが無効に使用されます。
class Leaf {
Item* data;
Leaf* parent;
Leaf* left;
Leaf* right;
friend class binaryTree;
Leaf(Item* data, Leaf* parent = 0, Leaf* left = 0, Leaf* right = 0) :
data(data), parent(parent), left(left), right(right) {
}
~Leaf() {
delete left;
delete right;
}
};
class binaryTree {
Leaf* root;
public:
binaryTree() :
root(0) {
}
~binaryTree() {
delete root;
}
void insert(Item* data, Leaf* &node = root) {
if (!node) {
node = new Leaf(data);
} else {
if (data->neptun < node->data->neptun) {
insert(data, node->left);
} else {
insert(data, node->right);
}
}
}
void listForward(Leaf* node = root) {
if (!node) {
listForward(node->left);
cout<<" "<<node->data->neptun;
listForward(node->right);
}
}
};
どうすればこれを修正できますか? これらのプライベート関数を作成して、root in パラメーターのみを使用して別の関数を介して呼び出すような回避策を作成するのは好きではありません。前もって感謝します。