多态中单独类的基本错误。 C ++

时间:2017-07-14 12:58:36

标签: c++

Aaand我再次回到我的第二个问题,我有点不确定是否应该发布所有单独的类,因为它看起来有点长。我确定解决方案非常小。 无论如何,我在多态性教程vid,我正在关注,一切正常,如果我按照它并把所有类放在“main.cpp”。但是当我试图用单独的类(见下文)做相同的程序时,我收到错误“

  

E:\ Codeblocks \ Poly \ main.cpp | 11 | error:初始化时无法将'Ninja '转换为'Enemy *'。“*。

我有点理解这个错误在说什么......我想......但是不知道我做错了什么,因为当Enemy和Ninja类没有分离时,同样的代码工作,但现在作为单独的类它不起作用。我想我在main.cpp中正确地包含了这些类。

main.cpp

#include <iostream>
    #include "Enemy.h"
    #include "Ninja.h"
    #include "Monster.h"


int main()
{
    Ninja n;
    Monster m;
    Enemy *enemy1=&n;
    Enemy *enemy2=&m;
    enemy1->setAttackPower(20);
    enemy2->setAttackPower(50);
    n.attack();
    m.attack();
    return 0;
}  

Enemy.h

#ifndef ENEMY_H
#define ENEMY_H


class Enemy
{
    public:
        Enemy();
        void setAttackPower(int a);


    protected:
        int attackPower;

    private:
};

#endif // ENEMY_H

Enemy.cpp

#include "Enemy.h"


Enemy::Enemy()
{
    //ctor
}

void Enemy::setAttackPower(int a)
{
    attackPower=a;
};

Ninja.h

#ifndef NINJA_H
#define NINJA_H



class Ninja
{
    public:
        Ninja();
        void attack();

    protected:

    private:
};

#endif // NINJA_H

Ninja.cpp

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


Ninja::Ninja()
{
    //ctor
}

void Ninja::attack(){
std::cout<<" I am a ninja. Ninja chop! -"<<attackPower<<"\n";}

1 个答案:

答案 0 :(得分:2)

这是因为您的 Sub won() Dim ws As Worksheet Dim lastrow As Long Set ws = ThisWorkbook.Sheets("Data imput") lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row For i = 3 To lastrow If ws.Cells(i, 6) = "customer" Then ws.Cells(i, 16) = 1 End If Next i MsgBox "done!" End Sub 课程并非来自Ninja课程。你必须像这样定义Ninja类:

Enemy
编辑:我添加了#include指令。没有它,编译器就不知道在哪里找到#include "Enemy.h" class Ninja : public Enemy { public: Ninja(); void attack(); protected: private: }; 类声明。