我正在为课程做作业,我得到了奇怪的编译错误。
错误在于error: 'Noble' has not been declared
和error: class 'Warrior' does not have any field named 'pBoss'
。
我是C ++的新手,所以我真的不知道我在这里做错了 - 似乎我宣布了两个类和所有成员字段。
#include <vector>
#include <iostream>
#include <ostream>
using namespace std;
class Warrior {
public:
Warrior(string name, double str) : name(name), strength(str), pBoss(nullptr) {}
bool hire(Noble* noble) { }
bool fire(Noble* noble) { }
void lost() { }
void won(double damageRatio) { }
string getName() const { return name; }
double getStrength() const { return strength; }
Noble* getBoss() const { return pBoss; }
void display(ostream& os = cout) const { }
private:
string name;
double strength;
Noble* pBoss;
};
class Noble {
public:
Noble(string name) : name(name), alive(true) {}
bool hire(Warrior& war) { }
bool fire(Warrior& war) { }
bool battle(Noble& enemy) { }
void display(ostream& os = cout) const { }
private:
vector<Warrior*> army;
string name;
double strength;
bool alive;
void lost() { }
void won(double damage) { }
};
我拿出了功能描述所以这不会太长,但是如果有什么我没有包含,请告诉我,我会更新帖子!
答案 0 :(得分:1)
build
不知道Warrior
是什么。您需要转发声明Noble
。将其放在Noble
声明之前:
Warrior
此外,您在class Noble;
class Warrior { ...
构造函数中拼错了pBoss
,将构造函数更改为:
Warrior
最后,在Warrior(string name, double str) : name(name), strength(str), pBoss(nullptr) {}
声明之后,您在Noble
内有一个额外的近距离支撑。
答案 1 :(得分:1)
当您定义display
时,尚未定义Warrior
。 C ++逐行工作。要解决此问题,您可以转发声明类。
Noble
答案 2 :(得分:0)
看起来你的贵族阶层可能会有额外的支撑:
$time = filemtime($temp_path);