我有一个结构:
struct myNode{
Node node; // node object takes just name parameter I mean node(string name);
int value;
};
在我的main()函数中,我有一个struct myNode指针,我想先读取一个文件来获取node对象的名称和值(只是一个整数)然后创建我对应的struct myNode。为此,我写了
int main(){
struct myNode * myRoot;
ifstream myfile (fileName);
string line;
getline(myfile,line);
int value=getValue(line);
myRoot= new myNode();
myRoot->value=value;
myRoot->node=node a(line);
return 0;
}
然而,我不确定,这是否正确,是否有人帮助我?
答案 0 :(得分:0)
是的,它可以工作,除了:
myRoot->node= node a(line)
可以是myRoot->node = Node(line)
或myRoot->node = line
。我想你将 a 视为Node的临时实例。答案 1 :(得分:0)
在您的代码中的许多致命问题中,我看到的那个必须给您带来最多麻烦的是这一行:
myRoot->node = node a(line);
node a(line)
部分是语法错误。我相信你的意思是:
myRoot->node = node(line);
或者,如果Node
没有explicit
构造函数:
myRoot->node = line;
其他致命的问题是你正在使用指针,使用new
分配(这两个都是不必要的选项),并且你正在对文件流执行提取而不检查它是否有效。所有这些都可以通过在堆栈上分配对象并检查输入是否成功来解决:
int main()
{
myNode myRoot;
ifstream myfile(fileName);
string line;
if (getline(myfile, line))
{
int value = getValue(line);
myRoot.value = value;
myRoot.node = line;
}
}