纯虚函数和三杠杆继承

ghi*_*ghi 0 c++ g++

我在头文件中定义了三个类:

Organizm.h:

#ifndef Organizm_H
#define Organizm_H

class Organizm {
    public:
        int sila;
        int inicjatywa;
        int trup;

        virtual void akcja() = 0;
        virtual void kolizja() = 0;
        virtual void rysowanie() = 0;
};

#endif
Run Code Online (Sandbox Code Playgroud)

Zwierze.h:

#include "config.h"
#include "Organizm.h"

#ifndef Zwierze_H
#define Zwierze_H

class Zwierze : public Organizm {
    public: 
        void akcja(int *, int *);
        void kolizja(Organizm *);
};

#endif
Run Code Online (Sandbox Code Playgroud)

而Wilk.h:

#include "Zwierze.h"

#ifndef Wilk_H 
#define Wilk_H

class Wilk: public Zwierze {
    public:
        Wilk();
        void rysowanie();
};

#endif
Run Code Online (Sandbox Code Playgroud)

所有非虚拟方法都在相应的文件中定义:Organizm.cpp,Zwierze.cpp Wilk.cpp

但是在编译时我会得到以下错误:

g++    -c -o main.o main.cpp
main.cpp: In function ‘int main()’:
main.cpp:13:16: error: cannot allocate an object of abstract type ‘Wilk’
  w1 = new Wilk();
                ^
In file included from main.cpp:5:0:
Wilk.h:6:7: note:   because the following virtual functions are pure within ‘Wilk’:
 class Wilk: public Zwierze {
       ^
In file included from Swiat.h:2:0,
                 from main.cpp:3:
Organizm.h:11:16: note:         virtual void Organizm::akcja()
   virtual void akcja() = 0;
                ^
Organizm.h:12:16: note:         virtual void Organizm::kolizja()
   virtual void kolizja() = 0;
                ^
<wbudowane>: polecenia dla obiektu 'main.o' nie powiod?y si?
make: *** [main.o] B??d 1
zsh: exit 2     make
Run Code Online (Sandbox Code Playgroud)

我做错了什么,我该如何解决?

小智 5

void akcja(int *, int *)void akcja()(重载)不同.你没有void akcja()在任何地方定义.