-1

コードでさまざまなエラーが発生し続けますが、誰かがコンパイラを介して実行し、解決するのを手伝ってくれませんか?? いくつか修正しましたが、現在取得しているのは、'classRooms::ClassRooms(std::string&, int&, .....

//classRoom.h

#ifndef CLASSROOMS_H
#define CLASSROOMS_H

#include <iostream>
#include <string>
#include "ClassRooms.h"

using namespace std;

class ClassRooms
{
public:

    ClassRooms(int nRooms=100)
        : numRooms(0), rooms(new ClassRooms[nRooms]) { }
    ~ClassRooms()
    {
        delete [] rooms;
    }
    void addRoom(const ClassRooms& cr)
    {
        rooms[numRooms++] = cr;
    }
    string findRoom(int seats)const;
    int getSeats();
    double getAreaPerSeat();
   string getRoomNumber();
private:
    int numRooms;
    ClassRooms *rooms;
    int numSeats;
    double length, width;

};

#endif //CLASSROOMS_H

//ClassRooms.h

#ifndef CLASSROOMS_H
#define CLASSROOMS_H

#include <iostream>
#include <string>
#include "classRoom.h"

using namespace std;

class ClassRooms
{
public:
    ClassRooms(int nRooms=100)
        : numRooms(0), rooms(new ClassRooms[nRooms]) { }
    ~ClassRooms()
    {
        delete [] rooms;
    }
   void addRoom(const ClassRooms& cr)
    {
        rooms[numRooms++] = cr;
    }
    string findRoom(int seats)const;
private:
    int numRooms;
    ClassRooms *rooms;
};

#endif //CLASSROOMS_H

//main.cpp

#include <iostream>
#include <fstream>
#include "ClassRooms.h"

using namespace std;

int main()
{
    ifstream fin("rooms.txt");
    if (!fin)
    {
        cout << "Cannot open file\n";
        return 1;
    }
    string roomNum;
    int seats;
    double len, wid;
    ClassRooms classRooms;

    while (fin >> roomNum >> seats >> len >> wid)
        classRooms.addRoom(ClassRooms(roomNum, seats, len, wid));
    fin.close();

    while (seats > 0)
    {
        cout << "Enter MAX capacity: ";
        cin >> seats;
        cout << "Your best room is " << classRooms.findRoom(seats) << endl;
    }
}

//ClassRooms.cpp

#include "classRoom.h"

string ClassRooms::findRoom(int seats)const
{
    int maxIndex = 0;
    while (maxIndex < numRooms && rooms[maxIndex].getSeats() < seats)
        ++maxIndex;
    if (maxIndex == numRooms) return "";

    for (int i = 0; i < numRooms; ++i)
        if (rooms[i].getSeats() >= seats
                && rooms[i].getAreaPerSeat() > rooms[maxIndex].getAreaPerSeat())
            maxIndex = i;
    return rooms[maxIndex].getRoomNumber();
}
4

1 に答える 1

0

Classroomsを受け取るコンストラクタがない(string, int, double, double)ため、これClassRooms(roomNum, seats, len, wid)はエラーです。ただし、適切なコンストラクターを簡単に追加できClassroomsます。

ClassRooms(string roomNum, int seats, double len, double wid){
    //do something
}
于 2013-11-10T19:03:16.277 に答える