代码是c++ primer plus第六版P560页的程序清单14.10。
代码和书上的一样,编译器一直这样报错。
自学的,实在不知道错误的原因是什么,没办法了,也不知道找谁问。
贼烦!!!
#ifndef WORKER_H_
#define WORKER_H_
#include <string>
using std::string;
class Worker{
private:
string fullname;
long id;
protected:
virtual void Data() const;
virtual void Get();
public:
Worker() : fullname("no one"), id(0L) {}
Worker(const string & s, long n) : fullname(s), id(n) {}
virtual ~Worker() = 0;
virtual void Set() = 0;
virtual void Show() const = 0;
};
class Waiter : virtual public Worker
{
private:
int panache;
protected:
virtual void Data() const;
virtual void Get();
public:
Waiter() : Worker(), panache(0) {}
Waiter(const string & s, long n, int p = 0) : Worker(s, n), panache(p) {}
Waiter(const Worker & wk, int p = 0) : Worker(wk), panache(p) {}
void Set();
void Show() const;
};
#endif
#include <iostream>
#include "worker.h"
using namespace std;
//Worker 方法
void Worker::Data() const
{
cout << "名字:" << fullname << endl;
cout << "工号:" << id << endl;
}
void Worker::Get()
{
getline(cin,fullname);
cout << "请输入工号:";
cin >> id;
while (cin.get() != '\n') continue;
}
//Waiter 方法
void Waiter::Data() const
{
cout << "等级:" << panache << endl;
}
void Waiter::Get()
{
cout << "请输入等级:";
cin >> panache;
while (cin.get() != '\n') continue;
}
void Waiter::Set()
{
cout << "请输入服务员的姓名:" << endl;
Worker::Get();
Get();
}
void Waiter::Show() const
{
Worker::Data();
Data();
}