如何在C++; 这是一个C++代码。我想在文件中写一个指向结构的指针。 当我尝试这样做时,它会生成一个错误。我做的是>>obj1[0];大体上 struct node3{ node3(){ nextContent = NULL; for (int i = 0; i<1020; i++) content[i] = '\0'; } char content[1020]; node3* nextContent; };
错误: 错误C2679:二进制“>>”:找不到使用右手的运算符 “node3*”类型的操作数(或没有可接受的转换)如何在C++; 这是一个C++代码。我想在文件中写一个指向结构的指针。 当我尝试这样做时,它会生成一个错误。我做的是>>obj1[0];大体上 struct node3{ node3(){ nextContent = NULL; for (int i = 0; i<1020; i++) content[i] = '\0'; } char content[1020]; node3* nextContent; };,c++,C++,错误: 错误C2679:二进制“>>”:找不到使用右手的运算符 “node3*”类型的操作数(或没有可接受的转换) 发生此错误的原因是您没有重载要与自定义对象一起使用的>>运算符。操作员不知道如何从文件中读取数据结构,反之亦然(操作员也不知道如何将其输出到文件) 如果要从文件中读取和写入数据结构,可以使用一种称为序列化的过程,该过程将数据结构转换为可以读取/写入文件的符号(大致) “递归序列化嵌套结构”是指数据结构包含指向相同类型的其他实例的指针,从而创建链。您需要递归地遍历所有节点,以便获取
发生此错误的原因是您没有重载要与自定义对象一起使用的>>运算符。操作员不知道如何从文件中读取数据结构,反之亦然(操作员也不知道如何将其输出到文件) 如果要从文件中读取和写入数据结构,可以使用一种称为序列化的过程,该过程将数据结构转换为可以读取/写入文件的符号(大致) “递归序列化嵌套结构”是指数据结构包含指向相同类型的其他实例的指针,从而创建链。您需要递归地遍历所有节点,以便获取有关数据结构的所有数据并能够序列化它 还请注意,只将指针地址输出到文件是没有用的,因为无法保证下次运行程序时内存空间中会有什么。你绝对必须存储数据
实现这一点的另一种方法是将数据存储为可读文本,例如XML文件。发生此错误的原因是您没有重载用于自定义对象的>>运算符。操作员不知道如何从文件中读取数据结构,反之亦然(操作员也不知道如何将其输出到文件) 如果要从文件中读取和写入数据结构,可以使用一种称为序列化的过程,该过程将数据结构转换为可以读取/写入文件的符号(大致) “递归序列化嵌套结构”是指数据结构包含指向相同类型的其他实例的指针,从而创建链。您需要递归地遍历所有节点,以便获取有关数据结构的所有数据并能够序列化它 还请注意,只将指针地址输出到文件是没有用的,因为无法保证下次运行程序时内存空间中会有什么。你绝对必须存储数据
另一种方法是将数据存储为可读文本,例如XML文件。将其转换为uint32(或64位系统上的uint64)。但这可能不是您想要的,因为很少有情况下指针需要写入文件。将其转换为uint32(或64位系统上的uint64)。但这可能不是您想要的,因为很少有情况需要将指针写入文件。您希望它做什么?实现您期望的任何行为的代码在哪里?基本上,您必须递归地序列化嵌套结构,或者不必太深入,只需编写一些与NULL对应的值……我想要obj1[0].content地址写入文件。什么是递归序列化嵌套结构?欢迎使用堆栈溢出。请尽快阅读这一页。你的题目是C;你的标签表示C++,因为你的代码使用了
uintpttr\u t
。
struct node1{
node1(){
for (int i = 0; i<496; i++)
fileName[i] = '\0';
}
char fileName[496];
node3* contentAdress;
};
int main(){
node1 obj1[2097];
node3 obj3[8192];
ifstream is("file.txt");
//I want the obj1[0].content Address to be written in file. For that I did:
**is >> obj1[0].contentAdress;** *THIS GENERATES AN ERROR*
return 0;
}