在我的代码中,我试图通过更改指针目标和打印相同指针的值来创建循环。这段代码是我无限列表的方法。
#include <iostream>
using namespace std;
class pacjent
{
public:
char nazwisko[20];
pacjent*nastepny;
pacjent();
~pacjent();
};
pacjent *POCZATEK = NULL, *KONIEC = NULL;
pacjent::pacjent() {
cout << "Podaj nazwisko: ";
cin >> nazwisko;
if (POCZATEK == NULL) {
POCZATEK = this;
KONIEC = this;
} else {
KONIEC->nastepny = this;
nastepny = NULL;
}
}
pacjent::~pacjent() {
POCZATEK = POCZATEK->nastepny;
}
pacjent* NOW = POCZATEK;
void drukuj() {
///////////////////////////////// LOOP MENTIONED
// while(NOW->nastepny!=NULL)
// {
cout << NOW->nazwisko << endl; //do not work
// NOW=NOW->nastepny;
// cout << POCZATEK->nazwisko << endl; // works fine
// }
} //////////////////////////////////
int main() {
char SELECTOR;
while (SELECTOR != 'q') {
cin >> SELECTOR;
switch (SELECTOR) {
case 'n':
KONIEC = new pacjent;
break;
case 'p':
delete POCZATEK;
break;
case 'd':
drukuj();
break;
default:
break;
}
}
return 0;
}
函数drukuj()
不会打印'NOW'(我得到空屏幕)指针的内容,但POCZATEK
工作正常。有什么想法吗?
答案 0 :(得分:1)
功能drukuj()不会打印“现在”的内容。 (我得到空屏幕)指针,但POCZATEK工作正常。有什么想法吗?
NOW
初始化为:
pacjent* NOW = POCZATEK;
那时,POCZATEK
的值为NULL
。因此,NOW
也会初始化为NULL
。稍后在您的代码中,POCZATEK
更改为指向新创建的对象,但不会更改NOW
指向的位置。它仍然指向NULL
。
您可以确保NOW
和POCZATEK
始终指向同一个对象,方法是NOW
引用指针并使用POCZATEK
初始化它。
pacjent*& NOW = POCZATEK;
答案 1 :(得分:0)
pacjent* NOW = POCZATEK; // this is null
创建新的pacjent对象并为其分配您想要的值,然后尝试打印出来。