setRoomName不会改变变量roomName
setRoomName does not change the variable roomName
我从文本文件中取出房间,并试图使用变量中的信息,所以在我将信息添加到linkedList后,通过房间id搜索我想要的房间,然后使用setRoomName =到它找到名称的房间。但这行不通……有谁能看出问题所在吗?
下面是我的代码:#include "Rooms.h"
#include "DoublyLinkedList.h"
#include <string>
using namespace std;
DoublyLinkedList<Rooms> roomsList;
DoublyLinkedListIterator<Rooms> itr = roomsList.getIterator();
Rooms :: Rooms()
{
this->roomID = 0;
this->roomName = "";
this->roomExits = "";
}
Rooms :: Rooms(int roomID,string roomName,string roomExits)
{
this->roomID = roomID;
this->roomName = roomName;
this->roomExits = roomExits;
}
int Rooms :: getRoomID()
{
return roomID;
}
void Rooms :: setRoomID(int roomID)
{
this->roomID = roomID;
}
string Rooms :: getRoomName()
{
return roomName;
}
void Rooms ::setRoomName(string roomName)
{
this->roomName = roomName;
}
string Rooms :: getRoomExits()
{
return roomExits;
}
void Rooms :: setRoomExits(string roomExits)
{
this->roomExits = roomExits;
}
void Rooms :: loadRooms()
{
string fileName = "Rooms\Rooms.txt";
ifstream infile(fileName);
string garbage;
int loadRoomID;
string loadRoomName1;
string loadRoomName2;
string loadRoomExits;
while(infile >>garbage >> garbage >> loadRoomID >> garbage >>
garbage >> garbage >> loadRoomName1 >> loadRoomName2 >> garbage
>> garbage >> loadRoomExits)
{
cout << "Room ID: tt"<< loadRoomID << "n";
cout << "Room Name: tt"<< loadRoomName1 <<" " << loadRoomName2 << "n";
cout << "Room Exits: tt" << loadRoomExits <<"n";
string loadRoomName = loadRoomName1 + loadRoomName2;
Rooms r1 (loadRoomID,loadRoomName,loadRoomExits);
roomsList.Append(r1);
}
}
void Rooms :: printRooms()
{
int index = 0;
//Loop through the iterator.
for(itr.Start();itr.Valid();itr.Forth())
{
index++;
cout << "------------------Rooms------------------n";
cout << "--------------------------------n";
cout << "Position:tt" << index << "n";
cout << "--------------------------------n";
cout << "Room ID:tt" << itr.Item().getRoomID() << "n";
cout << "Room Name:tt" << itr.Item().getRoomName() << "n";
cout << "Room Exits:tt" << itr.Item().getRoomExits() << "n";
cout << "------------------------------------------n";
}
cout << "Rooms: tt" << roomsList.getCount() << "n";
}
string Rooms :: searchByRoomID(int searchByID)
{
//Loop through the Iterator.
for (itr.Start(); itr.Valid(); itr.Forth())
{
//If the object entered has the same first name as the one in the loop.
if (itr.Item().getRoomID() == searchByID)
{
//Print out the details from the list.
cout << "------------------------------------------n";
cout << "Room ID:tt" << itr.Item().getRoomID() << "n";
cout << "Room Name:tt" << itr.Item().getRoomName() << "n";
cout << "Room Exits:tt" << itr.Item().getRoomExits() << "n";
cout << "------------------------------------------n";
setRoomID(itr.Item().getRoomID());
setRoomName(itr.Item().getRoomName());
setRoomExits(itr.Item().getRoomExits());
cout << getRoomID();
cout << getRoomName();
cout << getRoomExits();
}
}
return getRoomName();
}
我发现的错误是您正在通过id找到一个房间,然后您正在设置id,名称,出口与您发现的相同。那么你如何找到一个变化
setRoomID(itr.Item().getRoomID());
setRoomName(itr.Item().getRoomName());
setRoomExits(itr.Item().getRoomExits());
而不是这个,你应该给一些其他的值,你需要设置例如
setRoomID(789);
setRoomName("Room ");
setRoomExits("yes");
这里找到的房间的id,名称,出口分别设置为789," room ","Yes"
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- setRoomName不会改变变量roomName