2014-02-07 54 views
1

的十六進制數我有這棵樹類:重載輸出操作符給出了相反的字符串

#include <fstream> 
using namespace std; 

#ifndef HUFF_TREE_H 
#define HUFF_TREE_H 

class HuffTree{ 
    public: 
     HuffTree(); 
     HuffTree(char data, float frequency); 
     ~HuffTree(); 
     HuffTree& operator = (const HuffTree& tree); 
     int getNumberNodes(); 
     float getFrequency(); 
     void merge(HuffTree *tree); 
     friend ostream& operator << (ostream &out, const HuffTree &tree); 

    private: 
     struct node{ 
      char data; 
      float frequency; 
      node* left; 
      node* right; 
     }; 
     node* head; 
     int number_nodes; 
     float avg_code_length; 
     void destroy(node* &head); 
     void copyTree(node* &t1, node* t2); 
}; 

#endif 

下面是重載輸出操作的代碼:

ostream& operator << (ostream &out, const HuffTree &tree){ 
    out << "testing"; 
    return out; 
} 

在我的主要功能,我打電話功能如下:

HuffTree* tree; 
cout << tree; 

從我已閱讀,這應該工作,但我得到十六進制數字p r到屏幕上。上面的例子打印出「0x1dcc2b0」。如果我將它傳遞給文件句柄,也會發生同樣的情況。我想我只需要一雙新的眼睛,任何人都可以看到我的問題?

+2

請出示tree' – Brian

回答

3

由於樹是一個指針,所以你正在輸出一個指針。

相反,你想這樣做:

cout << *tree 
+0

的'定義和突然的很有道理......我在Linux下編程,並使用Geany到IM編輯我的代碼。我之前曾嘗試過,但它會吐出各種各樣的錯誤,所以我認爲我出於某種原因不能這麼做。在Geany之外跑了,編譯完成。謝了哥們! – Flyingcows00