setRoomName不会改变变量roomName

setRoomName does not change the variable roomName

本文关键字:变量 roomName 改变 setRoomName      更新时间:2023-10-16

我从文本文件中取出房间,并试图使用变量中的信息,所以在我将信息添加到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"