重载的输出运算符给出十六进制数而不是字符串

时间:2014-02-07 06:35:21

标签: c++ operator-overloading

我有一个树类:

#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;
}

在我的main函数中,我调用函数如下:

HuffTree* tree;
cout << tree;

根据我的阅读,这应该可行,但我将十六进制数字打印到屏幕上。上面的例子打印出&#34; 0x1dcc2b0&#34;。如果我传递一个文件句柄,就会发生同样的事情。我想我只需要一双新眼睛,有人能看到我的问题吗?

1 个答案:

答案 0 :(得分:3)

由于树是指针,因此您输出指针。

相反,你想这样做:

cout << *tree