這聽起來有點奇怪,我只是說因爲我不知道我怎麼能說出來。我試圖實現A *,之前我做過,但是我有一個跟蹤我的路徑的問題,所以我決定運行一個小測試。這個問題又是這樣的:爲什麼我不能擁有指向與成員變量指針類型相同的對象的指針?
我有一個類,看起來有點像這樣:
class Number {
public:
int xPos;
int yPos;
Number *prevNum;
Number(int x, int y) {
xPos = x;
yPos = y;
}
};
,並在主函數中,我這樣做
int main() {
Number n(2, 2);
Number *current = &n;
vector<Number> nums;
nums.push_back(*current);
for (unsigned i = 0; i < 15; i++) {
Number n(current->xPos + 1, current->yPos);
n.prevNum = current;
nums.push_back(n);
current = &n;
cout << current->xPos + 1 << " ";
}
for (unsigned i = 0; i < nums.size(); i++) {
if (nums.at(i).prevNum) {
cout << nums.at(i).prevNum->xPos << " ";
}
}
return 0;
}
出於某種原因,返回這個:
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 555437610 2 17 17 17 17 17 17 17 17 17 17 17 17 17 17
555437610每次都不一樣,所以我假設我可能會有一個錯誤wi th指針。我不能無限嵌套成員函數* prevNum嗎?我不完全確定如何描述它。
不是太挑剔,但你確定這個類代表一個_Number_?重命名可能有意義。 – byxor
您的構造函數確實應該將'prevNum'設置爲'nullptr'。 –
'n'是for循環中的一個局部變量,所以'&n'在循環外部都是未定義的。 –