啊啊哦哦啦啦 2019-04-20 22:48 采纳率: 0%
浏览 846

c++报错undefined reference to "析构函数" ,引号里的析构函数是一个基类的析构函数,是纯虚析构函数?

代码是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();
}
  • 写回答

1条回答 默认 最新

  • 辛潇 2019-04-21 09:51
    关注

    纯虚析构函数要有函数体才行,你实现一下Worker的析构函数试试

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料