2012-03-26 8 views
0

ホテルを管理するクラスのプログラムを作成しています。このReport1機能は、占有されているすべての部屋と、各部屋にいる顧客を一覧表示する機能です。私はコードが書かれているが、私の入れ子になったFORループの条件文にエラーが発生しています。コンパイラが下線を引いていますiRoomループ内...........(int j = 0; j < iRoom .customerIDinRoom ..... iRoom式には、私は(タイプルームの)ループの最初でそれを宣言したときに、クラスの種類が、私はどれ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

+0

'iRoom.customerIDinRoom [i] .size();'?タイプなどを知らなくてもわかりません –

+0

@littleadv私はそれを – Mike

答えて

2

エラーですcustomerIDInRoomintですが、sizeの方法です。 0からcustomerIDInRoom-1までループする場合は、size()コールを削除するだけです。 customerIDInRoom intの範囲を(コードの "no pushback"コメントで示唆されているように)維持する必要がある場合は、おそらくstandard library containerが必要です。どちらを使用するかは、要件によって異なります。これらはすべてsize()メソッドを持っています。

1

customerIDinRoomを宣言したintにはsize()メソッドがありませんが、とにかくそれを呼び出しています。 std::vector<int>のようにそれを正気なものとして宣言すればうまくいくはずです。また

Room iRoom = listofrooms.get(i); 

これはiRoomlistofroomsから部屋をコピーしています。これは必要以上に多くの作業です。代わりに参照を使用する必要があります。

const Room& iRoom(listofrooms.get(i)); 
関連する問題