C++ 在写入文件时用 class 保存指针成员

C++ save pointer members with class when writing to file

我在 C++ 中有一个简单的二叉树实现。我正在通过 std::ofstream::write((char*)&myTree, sizeof(mytree));.

将其保存到文件中

但是class由于类型不全,定义了左右节点的指针

class Node
{
public:
    int value;
    Node(int _value)
    {
        value = _value;
    }

    Node *left;
    Node *right;
};

如何解引用指针并保存左右节点与树中的根节点?

指针指向内存中的特定位置。它们不能持久保存到磁盘。当您启动一个新进程并将它们读回时,您的进程的内存布局将有所不同。所以,你所做的是行不通的。

您将不得不为您的 class 编写一个自定义序列化程序来处理它的结构。

boost::serialization 是一个不错的起点:https://www.boost.org/doc/libs/1_75_0/libs/serialization/doc/tutorial.html

还有麦片:https://uscilab.github.io/cereal/

正如另一位评论者所指出的,这是对 C++ 中序列化状态的便捷总结:https://isocpp.org/wiki/faq/serialization