我正在為Tree類撰寫一個預序遍歷:
class Tree {
public:
...
void preOrder(TreeNode* root)
{
if (root != nullptr)
{
cout << root->key << " ";
preOrder(root->left);
preOrder(root->right);
}
}
private:
TreeNode* root = nullptr;
}
我想將Tree的根資料成員傳遞給preOrder以便在main.cpp 中,我像這樣呼叫函式:
Tree.preOrder();
所以我這樣編碼
void preOrder(TreeNode* root = this->root)
但編譯器產生錯誤
'this' 只能在非靜態成員函式中使用
有沒有什么辦法解決這一問題?或者我將使用迭代而不是遞回遍歷。
uj5u.com熱心網友回復:
就像錯誤訊息所說的那樣,您不能this在方法引數中使用。只需定義一個preOrder()呼叫 1 引數版本的 0 引數多載。
class Tree {
public:
...
void preOrder()
{
preOrder(root);
}
void preOrder(TreeNode* aRoot)
{
if (aRoot)
{
cout << aRoot->key << " ";
preOrder(aRoot->left);
preOrder(aRoot->right);
}
}
private:
TreeNode* root = nullptr;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313543.html
上一篇:從3小時時段延長至N天
