猿问

C++多态篇课上的一个例子运行出错,关于抽象类的

//Person类的定义

#ifndef PERSON_H_
#define PERSON_H_
using namespace std;
#include <string>

class Person{
public:
    Person(string name);
    virtual ~Person();
    virtual void work() = 0;
protected:
    string m_strName;
};

#endif
//Person类的实现

#include "Person.h"
#include <iostream>

Person::Person(string name)
{
    m_strName = name;
    cout << "Person()" << endl;
}

Person::~Person()
{
    cout << "~Person" << endl;
}
//Worker类的定义

#ifndef WORKER_H_
#define WORKER_H_
#include "Person.h"



class Worker :public Person
{
public:
    Worker(string name,int age);
    virtual ~Worker();
    //virtual void work();
protected:
    int m_iAge;
};

#endif
//Worker类的实现

#include"Worker.h"
#include <iostream>



Worker::Worker(string name,int age) :Person(name)
{
    m_iAge = age;
    cout << "Worker()" << endl;
}

Worker::~Worker()
{
    cout << "~Worker" << endl;
}
//Dustman类的定义

#ifndef DUSTMAN_H_
#define DUSTMAN_H_
#include "Worker.h"



class Dustman :public Worker
{
public:
    Dustman(string name,int age);
    ~Dustman();
    virtual void work();

};

#endif
//Dustman类的实现

#include "Dustman.h"
#include <iostream>


Dustman::Dustman(string name, int age) :Worker(name,age)
{
    cout << "Dustman()" << endl;
}
Dustman::~Dustman()
{
    cout << "~Dustman" << endl;
}

void Dustman::work()
{
    cout << "work()" << endl;
}
//main函数

#include <iostream>
#include "Dustman.h"
#include <stdlib.h>

using namespace std;

int main(void){
    Dustman persn("jin",20);

    system("pause");
    return 0;
}

编译可以通过,但运行就会报错,下面是所有的错误提示,点击错误提示不能提示是哪一行出错了,所以搞不明白哪儿错了

警告    1    warning LNK4042: 对象被多次指定;已忽略多余的指定    E:\visual studio 2013\Projects\test\test\Debug\Dustman.obj    1    1    test

警告    2    warning LNK4042: 对象被多次指定;已忽略多余的指定    E:\visual studio 2013\Projects\test\test\Debug\Person.obj    1    1    test

错误    3    error LNK2019: 无法解析的外部符号 "public: __thiscall Dustman::Dustman(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int)" (??0Dustman@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z),该符号在函数 _main 中被引用    E:\visual studio 2013\Projects\test\test\demo.obj    test

错误    4    error LNK2019: 无法解析的外部符号 "public: virtual __thiscall Dustman::~Dustman(void)" (??1Dustman@@UAE@XZ),该符号在函数 _main 中被引用    E:\visual studio 2013\Projects\test\test\demo.obj    test

错误    5    error LNK1120: 2 个无法解析的外部命令    E:\visual studio 2013\Projects\test\Debug\test.exe    test


BlueCitizen
浏览 1476回答 1
1回答
随时随地看视频慕课网APP
我要回答