需要帮助改进我的 c++ 和类创建 2.

Need help improving my c++ and class creation 2

本文关键字:创建 c++ 我的 帮助      更新时间:2023-10-16

我想知道我可以在哪里改进我的程序,以及我的代码遇到了问题。

这是我的英雄类和来源,它告诉我我已经hero h;调用已删除的函数以及如何通过此函数传递统计信息? 在我弄清楚这一点之前,我已经//类构造函数。

 class hero : public Stats {
    //protected:
public:

    void raceAndClass() {
        Stats S(10,10,10,10,10,10);
        race c_race(race::orc, S);
        //classes c_classes(classes::fighter, modStats, sneak, bluff, deplomacy, swim, mana, run);
        using namespace std;
        }
};

int main()
{
        hero H;
        H.raceAndClass();
        while (true);
}

这是我的下一个班级统计数据

   class Stats {
    public:
        int //default stats
            Str = 10,
            Dex = 10,
            Con = 10,
            Int = 10,
            Wis = 10,
            Chr = 10;
    Stats(int STR, int DEX, int CON, int INT, int WIS, int CHR) :
        Str(STR), Dex(DEX), Con(CON), Int(INT), Wis(WIS), Chr(CHR) {
    }
};

我的种族CPP和标题

  #include"stats.h"
class race {
public:
    enum raceOpt { orc, elf, human };
    race(raceOpt c_raceOpt, Stats &stats);

    //race opt outcomes 
    void ORC(Stats& stats) {
        stats.Str += 2;
        stats.Int -= 2;
        stats.Chr -= 2;
    }
    void ELF(Stats &stats) {
        //elf code and stat changes
    }
    void HUMAN(Stats &stats) {

}
    };

#include"race.h"
race::race(raceOpt c_raceOpt, Stats &stats) {
    switch (c_raceOpt) {
    case orc:
        ORC(stats);
        break;
    case human:
        //human code
        break;
    case elf:
        //elf code
        break;
    }
}

最后是我的课程CPP和标题。(当前未调用(

#include"stats.h"
class classes {
public:
    enum classOpt { fighter, mage, soccerPlayer };
    classes(classOpt c_classOpt, double ModStats[_MAX_PATH], int& Sneak, int& Bluff, int& Deplomacy, int& Swim, int& Mana, int& Run);
    void Fighter(int& SWIM, int& RUN, int& BLUFF, double ModStats[_MAX_PATH]) {
        SWIM = static_cast<int>(SWIM + std::round(((ModStats[1] * 2.3))));
        RUN = static_cast<int>(RUN + (std::round(((ModStats[1] * 2)))));
        BLUFF = static_cast<int>(BLUFF + std::round(((ModStats[0] * 2.5))));
    }
    void Mage(int& MANA, int& DEPLOMACY, int& BLUFF, double ModStats[_MAX_PATH]) {
        //code to be added
    }
    void SoccerPlayer(int& RUN, int& SWIM, int& DEPLOMACY, int& SNEAK, double ModStats[_MAX_PATH]) {
        //code to be added
    }
};
#include"classes.h"

classes::classes(classOpt c_classOpt, double ModStats[_MAX_PATH], int& Sneak, int& Bluff, int& Deplomacy, int& Swim, int& Mana, int& Run) {
    switch (c_classOpt) {
    case fighter:
        Fighter(Swim, Run, Bluff, ModStats);
        break;
    case mage:
        Mage(Mana, Deplomacy, Bluff, ModStats);
        break;
    case soccerPlayer:
        SoccerPlayer(Run, Swim, Deplomacy, Sneak, ModStats);
        break;
    }
}

您的hero类派生自Stats 。您的Stats类需要一个带有一堆参数的构造函数调用;没有默认构造函数。因此,您不能仅使用 hero H; 调用默认的 hero 构造函数,因为没有构造函数(这就是编译器告诉您不能引用已删除方法的地方(。你需要为 hero 实现一个无参数构造函数,它使用合适的参数调用 Stats 构造函数。

我重做了我的统计课和我的英雄课!! 我还将参加我的统计课并向其添加更多统计数据/技能,并重新找到我的职业。 感谢您的帮助!!

#pragma once
class Stats {
public:
    int //default stats
        Str = 10,
        Dex = 10,
        Con = 10,
        Int = 10,
        Wis = 10,
        Chr = 10;
    Stats(){}
};

//hero class vvvvv
class hero : public Stats {
private:
    Stats s;
public:
     hero() {
         race c_race(race::orc, s);
         std::cout << s.Str << std::endl;
         std::cout << s.Int << std::endl;
         std::cout << s.Chr << std::endl;
         std::cout << s.Wis << std::endl;
        //classes c_classes(classes::fighter, modStats, sneak, bluff, deplomacy, swim, mana, run);
        }
};