我无法运行我已被指派修改的代码。
代码工作正常,但是我被要求从代码中测试一个函数,所以我创建了一组数据,我给函数测试输出将是所需的。< / p>
但是,每当我运行我的代码时,都会出现一个消息框,指出程序已停止工作。
这是代码的开头:
int main(int argc, char *argv[])
{
int nrMonsters;
cout << "Hello World!" << endl;
Monsters *monster[20]={0};
cout<<"Beginning of Test\n...\n";
//the first data set prepared for testing
Monsters *date1[4]= {0};
//date1 - CC BB AA DD
date1[0]->name="CC";
date1[1]->name="BB";
date1[2]->name="AA";
date1[3]->name="DD";
for (int a=0;a<4;a++)
{
date1[a]->type=BALAUR;
date1[a]->health=10;
}
cout<<"Set date1 initialised.";
cout<<"\n\nSorting set date1...\t";
sortMonster(4,date1);
以下是结构:
enum MonsterTypes
{
UNDEFINED=-1,
VARCOLAC,
CAPCAUN,
PAIANJEN,
SPIRIDUS,
STRIGOI,
BALAUR
};
struct Monsters
{
MonsterTypes type;
std::string name;
int health;
};
这是函数的要求(它的意思是按字母顺序排序):
void sortMonster(int number_of_monsters, Monsters **monster)
{
/ /sorting
}
当我将鼠标悬停在第二个参数上方时,它会显示 “怪物**怪物” 但当我将它悬停在代码的顶部时,它会被初始化,它会读取 “Monster * mosnter []”
有谁知道如何解决这个问题? 谢谢。
答案 0 :(得分:1)
你必须分配内存。
Monsters *date1 = new Monsters[4];
或使用C样式malloc
不要忘记通过
释放分配的内存delete []date1;
或
free(date1); // if allocated with malloc/calloc