Итак, у меня есть структура героя, которая содержит имя, здоровье и атаку. Я разрешаю пользователю вводить количество героев, которые они хотят создать, и создать массив из многих героев (у меня также были проблемы, позволяющие пользователю определять размер массива, поэтому проблема может быть там). При попытке установить атрибуты с помощью цикла массива, я получаю сообщение об ошибке: IntelliSense: оператор «[]» не соответствует этим операндам. Типы операндов: Герой [int]Отображение массива ошибок структуры/класса C++
Мой вопрос: как мне пройти через массив структур, чтобы установить их атрибуты, и если да, отобразится ли информация героя с помощью функции отображения?
struct Hero
{
private:
string hName;
int hHealth;
int hAttack;
public:
void displayHeroData();
void setName(string);
void setHealth(int);
void setAttack(int);
};
void Hero::displayHeroData()
{
cout << "\n\n\n\nHERO INFO:\n" << endl;
cout << "Name: " << hName << endl;
cout << "Health: " << hHealth << endl;
cout << "Attack: " << hAttack << endl;
};
void Hero::setName(string name)
{
hName = name;
}
void Hero::setHealth(int health)
{
if(health > 0)
hHealth = health;
else
hHealth = 100;
}
void Hero::setAttack(int attack)
{
if(attack > 0)
hAttack = attack;
else
hAttack = 100;
}
int main()
{
string name;
int health;
int attack;
int num;
Hero *heroList; //declaring array
//getting size of array
cout << "How many hero's do you want to create? (greater than 0)" <<endl;
cin >> num;
heroList = new Hero[num]; //this is the array of Heroes
//looping through the array
for(int x = 0; x < num; ++x){
//creating a new hero, I think???
Hero heroList[x];
//setting hero's name
cout << "What is hero" << x <<"'s name?" << endl;
cin >> name;
heroList[x].setName(name);
//display the character after attributes have been set
heroList[x].displayCharacterData();
}//end of for loop
return 0;
}
Это ошибка на самом деле. – CroCo
. Снятие это работа. или вы получили ошибку времени выполнения? – hasan83
Это сработало и позволило мне пройти! Спасибо! – user1368970