这听起来有点奇怪,我只是说因为我不知道我怎么能说出来。我试图实现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'在循环外部都是未定义的。 –