双星号语法&帮助调用成员函数

时间:2011-10-24 22:01:25

标签: c++ syntax

我正在开设一个航空公司课程。 Airline类包含一系列动态Flight对象的可移动性。

在我拥有的航空公司课程中(无法编辑或更改,这是我为作业提供的头文件):

//Airline.h    
class Airline {
public: 
    Airline();              // default constructor
    Airline(int capacity);  // construct with capacity n
    void cancel(int flightNum);     
    void add(Flight* flight);
    Flight* find(int flightNum);
    Flight* find(string dest);

    int getSize();


private:
    Flight **array;        // dynamic array of pointers to flights
    int capacity;          // maximum number of flights
    int size;              // actual number of flights

    void resize();
};

//Flight.h
    class Flight {
public:
    Flight();
    // Default constructor

    Flight(int fnum, string destination);     
    void reserveWindow();    
    void reserveAisle();
    void reserveSeat(int row, char seat);

    void setFlightNum(int fnum);

    void setDestination(string dest);

    int getFlightNum();

    string getDest();

protected:
    int flightNumber;
    bool available[20][4];    //only four seat types per row; only 20 rows
    string destination;
 };

我正试图在课堂上使用其中一种查找方法。

为此,我有:

    Flight* Airline::find(int flightNum){
    bool found = false;
    for(int i = 0; i < size; i++){
        if(array[i].getflightNum() == flightNum){
            found = true;
            return array[i];
        }
    }

    if(!found)
        return 0;
}

// Return pointer to flight with given number if present, otherwise
// return 0.

但它说我在尝试调用getFlightNum()方法时需要一个类类型。我真的不明白这个错误。我没有正确地调用方法吗?什么是正确的语法?

1 个答案:

答案 0 :(得分:4)

由于您正在处理指针而不是实际对象,请尝试以下方法:

if(array[i]->getflightNum() == flightNum){     // Notice I am using -> instead of .
    found = true;
    return array[i];
}