【问题标题】:C++ eror:invalid conversation from 'const char*' to 'int'C++ 错误:从 'const char*' 到 'int' 的无效转换
【发布时间】:2020-05-12 09:25:18
【问题描述】:

我是初学者。我想将这个MoveSkill 类与Crusader 对象一起使用,但我做不到。

161

class MoveSkill : public Skill {
public:
    int step;   // kaç adım yer değişecek, - ise geriye + ise ileriye
    MoveSkill(int step);

public:
    virtual void Use(std::vector<Unit*> units, int userIndex, int onUsing);
};

596

MoveSkill::MoveSkill(int step) : Skill(std::vector<int>(), std::vector<int>(), "") {
    this->step = step;
}

894

Crusader::Crusader(std::string name) : Hero(33, 5, 0, 1, 0, 3, 6, 12, 67, 40, name) {
    smite = new Smite("Smite");
    stunningBlow = new Stunning_Blow("Stunning Blow");
    holyLance = new Holy_Lance("Holy Lance");
    bulwark = new Bulwark_Of_Faith("Bulwark Of Faith");
    moveskill= new MoveSkill("Move skill");
    skills.push_back(smite);
    skills.push_back(stunningBlow);
    skills.push_back(((AttackSkill*)holyLance));
    skills.push_back(bulwark);
    skills.push_back(moveskill);
}

构建消息:

||=== 构建文件:“无项目”中的“无目标”(编译器:未知)===| C:\Users\emred\Desktop\project.cpp||在构造函数'Crusader::Crusader(std::__cxx11::string)':| C:\Users\emred\Desktop\project.cpp|894|错误:从 'const char*' 到 'int' 的无效转换 [-fpermissive]| C:\Users\emred\Desktop\project.cpp|596|注意:初始化 'MoveSkill::MoveSkill(int)' 的参数 1| ||=== 构建失败:1 个错误,0 个警告(0 分钟,0 秒)===|

我该如何解决?

【问题讨论】:

  • 您的编译器说您声明构造函数采用int,但您给了它一个字符串。哪一个?此外,*moveskill = ... 看起来很可疑,就像取消对未初始化指针的引用一样。
  • @chris 我认为那一行额外的* 只是为了帮助指出哪一行编译失败。看到; 之后的* 了吗?它们可能不在 OP 的实际代码中。
  • @RemyLebeau,谢谢,我错过了尾随。
  • 非常感谢您

标签: c++


【解决方案1】:

关于此声明:

moveskill= new MoveSkill("Move skill");

MoveSkill() 构造函数需要 int 作为输入,但您给它的是字符串文字(在本例中为 const char[11])。所以,要么给它它想要的东西,例如:

moveskill= new MoveSkill(12345);

否则您将不得不更改 MoveSkill 构造函数以采用 std::string 而不是 int

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多