int hour = 0, minute = 0; int hp; int time_max; int city_num; int warrior_hp[5]; int warrior_strength[5];是全局变量,请分别放在头文件和源文件中
时间: 2024-02-25 11:57:52 浏览: 68
以下是将全局变量放置在头文件和源文件中的示例:
**global.h**
```c++
#ifndef GLOBAL_H
#define GLOBAL_H
extern int hour;
extern int minute;
extern int hp;
extern int time_max;
extern int city_num;
extern int warrior_hp[5];
extern int warrior_strength[5];
#endif // GLOBAL_H
```
在头文件中,我们使用 `extern` 关键字声明全局变量,以便在其他源文件中共享它们的定义。
**global.cpp**
```c++
#include "global.h"
int hour = 0;
int minute = 0;
int hp = 0;
int time_max = 0;
int city_num = 0;
int warrior_hp[5] = { 0 };
int warrior_strength[5] = { 0 };
```
在源文件中,我们定义全局变量,并在其他源文件中共享它们的声明。这些变量的初始值可以根据需要进行设置。请注意,我们不需要在这里使用 `extern` 关键字,因为我们已经在头文件中声明了这些变量。
最后,在需要使用这些全局变量的源文件中,只需包含 `global.h` 头文件即可:
```c++
#include "global.h"
// 在此使用全局变量
```
相关问题
int hour = 0, minute = 0; int hp; int time_max; int city_num; int warrior_hp[5]; int warrior_strength[5]; void get_time() { cout << setfill('0') << setw(3) << hour << ':' << setfill('0') << setw(2) << minute; }是全局变量和函数 请分别放在头文件和源文件中
以下是将全局变量和函数放置在头文件和源文件中的示例:
**global.h**
```c++
#ifndef GLOBAL_H
#define GLOBAL_H
extern int hour;
extern int minute;
extern int hp;
extern int time_max;
extern int city_num;
extern int warrior_hp[5];
extern int warrior_strength[5];
void get_time();
#endif // GLOBAL_H
```
在头文件中,我们使用 `extern` 关键字声明全局变量,以便在其他源文件中共享它们的定义。此外,我们还声明了 `get_time()` 函数。
**global.cpp**
```c++
#include "global.h"
#include <iostream>
#include <iomanip>
int hour = 0;
int minute = 0;
int hp = 0;
int time_max = 0;
int city_num = 0;
int warrior_hp[5] = { 0 };
int warrior_strength[5] = { 0 };
void get_time() {
std::cout << std::setfill('0') << std::setw(3) << hour << ':' << std::setfill('0') << std::setw(2) << minute;
}
```
在源文件中,我们定义全局变量,并实现 `get_time()` 函数。请注意,我们仍然需要使用 `extern` 关键字在头文件中声明全局变量,但在源文件中我们不需要使用它。
最后,在需要使用这些全局变量和函数的源文件中,只需包含 `global.h` 头文件即可:
```c++
#include "global.h"
// 在此使用全局变量和函数
```
void HeadQuarter::makeWarriors(int time, int k) { if (lastIndex == -2) return; int index = (lastIndex + 1) % WarriorNum; int wKind = sequence[index]; int cnt = 0; if (leftValue < initLifeValue[wKind]) { lastIndex = -2; return; } lastIndex = index; int id = ++totalNum; leftValue -= initLifeValue[wKind]; shared_ptr<Warrior> pw = Warrior::create(wKind, this, id, initLifeValue[wKind], attackValue[wKind] , k); warriors.push_back(pw); pw->logBirth(time); }
这是一个 C++ 函数 makeWarriors,它是一个 HeadQuarter(司令部)类的成员函数。这个函数的作用是制造武士。函数的参数包括当前的时间 time 和武士的阵营 k。函数内部会根据上一次制造的武士的种类和当前时间来确定这次制造的武士的种类,并检查司令部剩余的生命元是否足够制造这个武士。如果生命元不足,则会更新 lastIndex 的值为 -2,表示无法制造新的武士。如果生命元足够,就会生成一个新的武士对象,并将其加入到 warriors 容器中。最后,函数会记录这个武士的出生时间。
阅读全文