gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:49:01 24 4
gpt4 key购买 nike

我有一个树类:

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

据我所读,这应该可以工作,但我将十六进制数字打印到屏幕上。上面的例子打印出“0x1dcc2b0”。如果我将文件句柄传递给它,也会发生同样的事情。我想我只是需要一双新鲜的眼睛,有人能看到我的问题吗?

最佳答案

因为 tree 是一个指针,所以你输出的是一个指针。

相反,您想这样做:

cout << *tree

关于c++ - 重载输出运算符给出十六进制数而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21620872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com