嗨,我正在执行按数字查找运输工具的功能,但遇到错误,我不知道为什么。
我必须抽象基类“ Transport”。
class Transport
{
protected:
int transportNumber;
char transportName[20];
char company[20];
struct tm dateOfMaking;
double speed;
char propertyType[20];
char transportType[20];
public:
Transport();
Transport(int,char*, char*, struct tm, double, char*, char*);
~Transport();
virtual char* GetName() = 0;
virtual bool Warning(double);
virtual void Print() = 0;
virtual void Save() = 0;
virtual int GetPassengerNumber();
virtual double GetEmptyWeight();
char * GetTransportType() { return transportType; }
int GetTransportNumber() { return transportNumber;}
};
此类从Transport继承。
class Aerial : public Transport
{
protected:
int engineNumber;
double length;
public:
Aerial() {}
Aerial(int, char*, char*, struct tm, double, char*, char*, int, double);
~Aerial();
};
我有一个此类,它是从Aeron类继承的。
class PassengerPlane : public Aerial
{
private:
int seatNumber;
double Bagswieght;
public:
PassengerPlane() {}
PassengerPlane(int, char*, char*, struct tm, double, char*, char*, int, double, int,double);
~PassengerPlane();
char* GetName();
bool Warning(double);
int GetPassengerNumber() { return seatNumber; }
void Save();
void Print();
};
使用ProgrammeManagement :: TransporSearchByNumber(int TN)函数返回Transport *值,您已经在此函数中存储并搜索文件中的对象,如下所示:
Transport* ProgrammeManagement::TransporSearchByNumber(int TN)
{
char num;
int x = 1;
PassengerPlane e;
Transport *T;
fstream file(Type,ios::in);
fstream fil(TransportFilePath,ios::in);
while(file.get(num))
{
if( num == '1')
{
fil.read((char*)&e,sizeof(PassengerPlane));
T = &e;
if( TN == T->GetTransportNumber()){
x = 0;
return T;
}
}
}
if(x){
cout << "Not found";
}
file.close();
fil.close();
}
我主要执行以下操作:
Transport*s;
s = ProgrammeManagement::TransporSearchByNumber(2);
s->Print();
但是当我在Transport上调用Print()函数时,出现以下错误(在运行时,它会编译):
pure virtual method called
terminate called without an active exception
任何帮助如何解决此问题的人。
非常感谢您!