C++ 指针具有正确的地址,但没有';不要显示真实的信息
我有一个指针的问题,当我创建这个对象时,我可以看到它们的正确地址,我可以访问这些信息C++ 指针具有正确的地址,但没有';不要显示真实的信息,c++,pointers,C++,Pointers,我有一个指针的问题,当我创建这个对象时,我可以看到它们的正确地址,我可以访问这些信息 World::World() { //Create Areas Area salaEst("East Room", "The East Room"); Area salaWest("West Room", "The West Room"); //Create Links salaEst.setDirection('w',&salaWest); salaW
World::World() {
//Create Areas
Area salaEst("East Room", "The East Room");
Area salaWest("West Room", "The West Room");
//Create Links
salaEst.setDirection('w',&salaWest);
salaWest.setDirection('e',&salaEst);
//Player stats
actual = &salaEst;
//Prints
salaEst.getArea();
actual->getArea();
cout << "East: " << &salaEst << "\nWest: " << &salaWest << "\nActual: " << actual << endl;
}
但是如果我想在另一个函数中看到这些信息,例如在这个函数中:
void World::actualArea() {
cout << "Get actual Address Area: " << actual << endl;
actual->getArea();
}
这部分代码位于区域
类中:
Area::Area(string name, string description) {
this->name = name;
this->description = description;
}
void Area::getArea() {
cout << name << endl;
cout << description << endl;
}
Area::Area(字符串名称、字符串描述){
此->名称=名称;
这个->描述=描述;
}
无效区域::getArea(){
cout这是因为变量在World::World
末尾被销毁。因此,指针无效:这是一个UB(未定义行为).salast和salaWest是World Constructor中的临时变量。函数作用域结束后,actual将指向正确的地址,该地址将包含垃圾。getArea
对于打印某些内容的函数来说是一个坏名称。将其称为printArea
我可以看到它们正确的地址
一个具有“看起来正确”的地址并不确定该地址上的内容的有效性。
Get actual Address Area: 0x7fff5086c6e8
ɆP??ɆP??ɆP??ɆP??ɆP??ɆP??ɆP??ɆP?
ɆP??ɆP??ɆP??ɆP??ɆP??ɆP?hɆP??ɆP??ɆP?
Area::Area(string name, string description) {
this->name = name;
this->description = description;
}
void Area::getArea() {
cout << name << endl;
cout << description << endl;
}