2012-03-26 73 views
0

我正在编写管理酒店的课程。 Report1函数应该列出所有占用的房间和每个房间中的哪个客户。我写了代码,但我在嵌套的FOR循环的条件语句中出现错误。编译器在循环中下划线iRoom ............ for(int j = 0; j < iRoom .customerIDinRoom .....它表示iRoom表达式必须有一个类的类型,但我给它一个类类型,当我宣布它的第一个for循环(类型之内)。任何suggestioins?错误:表达式必须具有类类型?

string Hotel::Report1() 
{ 

string result; 
for(int i=0;i<listofrooms.size();i++) 
{ 
    Room iRoom = listofrooms.get(i); 
    result+= padLeft(intToString(iRoom.roomID),' ',8)+" "+ 
     padRight(iRoom.name,' ',20) + " "+ 
     padLeft(intToString(iRoom.floor),' ',8) + " " + 
     padLeft(intToString(iRoom.number),' ',8) + " " + 
     padLeft(intToString(iRoom.basePriceInSeason),' ',8) + " " + 
     padLeft(intToDollarString(iRoom.basePriceOutOfSeason),' ',8) + "\n"; 

    for(int j = 0; j < iRoom.customerIDinRoom.size(); j++) 
    { 
     int cusID= iRoom.customerIDinRoom[j]; 
     Customer & cus = listofcustomers.getByID(cusID); 
     result+= padLeft(intToString(cus.customerID),' ',18)+" "+ 
      padRight(cus.name,' ',20) + " "+ 
      padRight(cus.phoneNumber,' ',10) + " " + 
      padRight(cus.ccNumber,' ',20) + "\n"; 

    } 
} 
return result; 
} 

这是房类声明

#include <iostream> 
#include <string> 
using namespace std; 

class Hotel; 

class ListOfRooms; 

class Room 
{ 
friend class ListOfRooms; 
friend class Hotel; 
public: 
Room(string n,int flo,int num,int bpin, int bpos); 
Room(); 
void addCusID(int cusID){customerIDinRoom = cusID;} 
void removeCustomerID(int cusID) { customerIDinRoom = 0;} 

private: 
string name; //BUILDING 
int floor; 
int number; 
int basePriceInSeason; 
int basePriceOutOfSeason; 
int roomID; 
int customerIDinRoom; //not pushback, will be assignment 
}; 
+0

你可以把类声明在这里吗? – littleadv 2012-03-26 05:05:05

+0

'iRoom.customerIDinRoom [i] .size();'?不知道类型等不知道 – 2012-03-26 05:06:25

+0

@littleadv我加了它 – Mike 2012-03-26 05:12:10

回答

2

错误是customerIDInRoomint,但您要拨打size方法就可以了。如果您尝试从0循环到customerIDInRoom-1,则可以简单地删除size()呼叫。如果您需要保留一系列customerIDInRoom整数(如代码中的“无回复”评论所建议的那样),那么您很可能需要一个standard library container。使用哪一个取决于您的要求。所有这些都有一个size()方法。

1

问题是int,这是你如何声明customerIDinRoom,没有size()方法,但你仍然在调用它。声明它是理智的,如std::vector<int>,它应该工作。

另外:

Room iRoom = listofrooms.get(i); 

这是从复制的listofrooms房间变成iRoom。这是比必要的更多的工作;你应该使用一个参考代替:

const Room& iRoom(listofrooms.get(i)); 
相关问题