2013-04-27 79 views
0

我應該知道在一個.h文件中有兩個獨立的類嗎?二叉搜索樹,非遞歸使用堆棧

我有一個與所有成員和公共&私有函數的二叉搜索樹類。

class BinarySearchTree 
{ 
    struct Node { 
     Node* left; 
     Node* right; 
     int val; 
    }; 
}; 

和下面的代碼我想設計一個指向該二叉搜索樹節點的指針堆棧。內same.h文件我有

class stack 
{ 
    Node* array; 
    // 

}; 

Visual Studio中不顯示聯動,不承認Node*。在一個.h文件中聲明兩個單獨的類是可以的,還是更好地實現嵌套在二叉搜索樹類中的堆棧類?

回答

1

你已經宣佈struct稱爲Node嵌套在類BinarySearchTree,所以如果你想指的是struct外類的,你需要參考這樣的:

class stack 
{ 
    BinarySearchTree::Node* array; 
    // 

}; 

無論這是否是好設計都是一個全新的問題,所以我建議在進一步詢問更多內容之前進一步完成實施。

編輯

就像你注意到沒有,有必要使嵌套結構public如果你想使用它的類之外。這本身並不一定是壞的或錯誤的。你不公開數據,只是一個聲明。

你有兩個選擇:

  1. 使嵌套結構公衆。
  2. 將嵌套結構放在封閉類之外。

就我個人而言,我會選擇第一個選項。

+0

感謝您的回覆。但是Node被聲明爲私有的。我嘗試了你的建議,並且VS能夠識別鏈接,但是顯示錯誤:無法訪問。但我不認爲將節點聲明爲公共是個好主意。 @RogerRowland以前謝謝。 – 2013-04-27 10:05:58

+0

啊,所以你*做得更進一步;-) – 2013-04-27 10:08:28

+0

是的。由於我只被問只有1.h文件,你會認爲實現堆棧類嵌套是OK嗎? @RogerRowland – 2013-04-27 10:12:12