对不起,标题。下面的代码可能有助于描述问题。
我已经设置了一个Student
类。
如果这样做:
Student stu1(score, "sam",5, "aaa", "[email protected]","156412", "518105" );
Student *tempSt = &stu1;
我尝试对
cout
的字符串成员tempSt
起作用。但是在以下情况下,字符串成员变为空:
tempSt = &Student(score, "sam",6, "aaa", "[email protected]","156412", "518105" );
怎么了?
希望你理解我的描述很糟糕:)
更新:
问题源于此:
void myList::add(Student *a) {
slistNode *tempNode = new slistNode();
tempNode->data = a;
if(lastNode == NULL) {
headNode = tempNode;
lastNode = tempNode;
} else {
lastNode->next = tempNode;
lastNode = tempNode;
}
++listLength;
}
我尝试将这些objs放入列表中,所以我希望这些obj是临时的(实际上我希望它们没有名称)。我不想做很多像stu1,stu2,stu3 ...这样的对象。
slistNode类:
class slistNode {
public:
slistNode() {
next = NULL;
}
Student *data;
slistNode *next;
};
最佳答案
您将获得一个指向临时对象的指针。该指针指向的对象将在代码到达下一行之前被销毁。当然,随着对象的破坏,访问字符串成员会调用未定义的行为。