我有兩個結構和功能引用內存在遞歸循環
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);
編譯4級警告('/ W4'),看看你得到了什麼警告。 – 2012-08-13 23:17:14
編譯器不會在'string attribute = 5;'那一行吐出來嗎?看到http://ideone.com/xVg0C,但這是海灣合作委員會... – krlmlr 2012-08-13 23:23:00
我想我發現了這個問題 - 遵循這些意見的建議。我爲初始調用(有5個屬性)創建了兩個值「int j = 0」,然後是「string temp =」「',然後將這兩個值用於全部五個值。 – 2012-08-13 23:27:08