我有两个结构和一个函数
struct nodeT {
bool last;
string attribute1;
string attribute2;
string attribute3;
vector<charT> leafs;
};
struct charT {
char character;
nodeT *next;
};
void addNode(nodeT *n, string stringy, string &attribute1, string &attribute2, string &attribute3)
{
if (stringy=="") {
w->last=true;
return;
} else {
if (n->last==true) {
attribute1=n->attribute1; //these attribute fields were given values earlier
attribute2=n->attribute2;
attribute3=n->attribute3;
}
addNode(n, stringy.substr(1), attribute);
}
}
使用
调用addNode
string test="";
addNode(root, "wordy", test, test, test);
问题是属性引用string &attribute
未更改为5,它会继续使用""
值进行下一次调用。
我尝试将其作为指针引用*attribute->n->attribute
并附上参考&attribute = n->attribute
这些都是在黑暗中拍摄的,并没有奏效。
编辑:应该使用单独的内存引用调用addNode
。
string test1="";
string test2="";
string test3="";
addNode(root, "wordy", test1, test2, test3);
答案 0 :(得分:0)
您是否尝试在构造函数中初始化attribute
?
struct nodeT {
bool last;
string attribute;
vector<charT> leafs;
nodeT() : attribute("5") {}
};
您的代码看起来有点但不完全,与Java不同......: - )
答案 1 :(得分:0)
函数声明和函数调用的参数不匹配,函数dosnt具有变量arg。它也不应该清除编译障碍。
答案 2 :(得分:0)
贡献者的回答帮助我找到了答案,但是他们已经从问题中略微回答了答案。
对于设置,函数使用结构nodeT
和charT
并被称为相当于
root is defined globally in the class
string wordy = "hello";
string test="";
addNode(root, "wordy", test, test, test);
应该使用单独的内存引用调用 addNode
。
string test1="";
string test2="";
string test3="";
addNode(root, "wordy", test1, test2, test3);
因此,当稍后使用唯一值更改属性1,2和3时,每个属性都有相应的唯一内存。