因此,我对C ++有点陌生,我们的老师还没有告诉我们如何使用来自单独的类文件的函数。
现在,我们只是在做基于文本的东西,但是我有它可以从数组中随机选择一个敌人类型和一个敌人。这是单独的类文件“ enemy.cpp”中的函数
我要在“ main.cpp”中调用此函数。 (我认为这会像“ enemy.genRandEnemy()”那样,但是它不起作用)。
这是敌军级的代码-
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <stdlib.h>
using namespace std;
using std::cout;
using std::cin;
using std::endl;
using std::string;
class enemy{
public:
void genRandEnemy();
};
void genRandEnemy() {
string enemy[] = {"dragon", "troll", "wolf", "wraith", "spider", "scorpion", "hydra", "snake", "reaper", "centipede", "worm"};
string enemyType[] = {"hell", "ice", "soul eater", "bone", "carnivorous"};
srand(time(0));
int randomEnemy = rand();
int randomEnemyType = rand();
int randEnemy = (randomEnemy % 11);
int randEnemyType = (randomEnemyType % 5);
if(randEnemyType == 0){cout << enemyType[0];}
else if(randEnemyType == 1){cout << enemyType[1];}
else if(randEnemyType == 2){cout << enemyType[2];}
else if(randEnemyType == 3){cout << enemyType[3];}
else if(randEnemyType == 4){cout << enemyType[4];}
cout << " ";
if(randEnemy == 0){cout << enemy[0];}
if(randEnemy == 1){cout << enemy[1];}
if(randEnemy == 2){cout << enemy[2];}
if(randEnemy == 3){cout << enemy[3];}
if(randEnemy == 4){cout << enemy[4];}
if(randEnemy == 5){cout << enemy[5];}
if(randEnemy == 6){cout << enemy[6];}
if(randEnemy == 7){cout << enemy[7];}
if(randEnemy == 8){cout << enemy[8];}
if(randEnemy == 9){cout << enemy[9];}
if(randEnemy == 10){cout << enemy[10];}
}
这是主类的代码片段-
cout << "Then out comes three " << enemy.genRandEnemy() << "s and they encircle you. ";
同样在主类中,我知道其中包含的位置-#include“ enemy.cpp”
我认为我没有为敌人设置正确的等级来做到这一点,而且我不确定如何做到。
最佳答案
不幸的是,您将代码拆分为几个文件。您应该将要使用的类型和函数的声明在多个文件中放入头文件中。因此,创建文件enemy.hpp
并将enemy
的声明放入其中:
class enemy
{
public:
void genRandEnemy();
};
将函数的定义放入单独的源文件中,并将其命名为
enemy.cpp
。它看起来像这样:#include "enemy.hpp"
#include <iostream>
// All your other includes needed to define the function...
void
enemy::genRandEnemy()
{
// Implementation of the function...
}
然后,在需要调用
enemy::genRandEnemy
的任何文件中:#include "enemy.hpp"
void
f()
{
enemy foe;
foe.genRandEnemy();
// Or whatever...
}
请注意,您的代码不一致:您将
genRandEnemy
声明为类enemy
的成员函数,但将其定义为任何类之外的自由函数。我的示例始终将其作为enemy
的成员。 (这实际上对我来说很奇怪。具有该名称的函数应该会创建一个新的敌人并返回它。如果它是enemy
的成员,我将需要提前一个enemy
来创建一个。)另外两句话:
每次调用
genRandEnemy
函数时,您都在重新播种随机生成器。这将导致随机性差。我敢肯定,您可以提供比
if(randEnemy == 1) { cout << enemy[1]; }
更好的解决方案。你是否可以?关于c++ - 从其他类文件实现函数C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25714745/