Top.Mail.Ru
Ответы

С++ вопрос программирование

#include<iostream>
#include <ctime>
class Entity
{
private:
int hp;
int defense;
int attack;
friend class Enemy;
public:
Entity(int tmpHp,int tmpDefense,int tmpAttack)
{
hp = tmpHp;
defense = tmpDefense;
attack = tmpAttack;
}
~Entity(){}
};
void GameProcces(int heroHp)
{
int action;
while(heroHp != 0)
srand(time(NULL));
action = 1 + (rand() % 10);
}
int main()
{

Entity hero(10,5,7);
Entity easyEnemy(5,4,3);
Entity middleEnemy(7,5,5);
Entity hardEnemy(10,6,7);
GameProcces(hero.hp);
}
Ошибка:.cpp|33|error: 'int Entity::hp' is private within this context|

По дате
По рейтингу
Аватар пользователя
Искусственный интеллект
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
 #include <cstdlib> 
#include <ctime> 
#include <iostream>

#define RAND(min, max) (rand() % ((max) - (min)) + (min))

using namespace std;

class Entity { 
    int hp = 0; 
    int defense = 0; 
    int attack = 0; 
    friend ostream& operator<<(ostream& out, const Entity& entity) { 
        return out  
            << "defense: " << entity.defense << '\n' 
            << "attack: " << entity.attack; 
    } 
public: 
    Entity(int hp, int defense, int attack) 
        : hp(hp), defense(defense), attack(attack) {} 
    int get_hp() const { 
        return hp; 
    } 
    void init_defense() { 
        ++defense; 
    } 
    void init_attack() { 
        ++attack; 
    } 
};

void game_process(Entity& entity) { 
    if (entity.get_hp()) { 
        while (true) { 
            const auto action = RAND(0, 11); 
            if (!action) break; 
            action & 1  
                ? entity.init_defense() 
                : entity.init_attack(); 
        } 
    } 
}

int main() { 
    srand(static_cast<unsigned>(time(nullptr)));  
    Entity hero(10, 5, 7); 
    Entity easy_enemy(5, 4, 3); 
    Entity middle_enemy(7, 5, 5); 
    Entity hard_enemy(10, 6, 7); 
    game_process(hero); 
    cout << hero << '\n'; 
} 
Аватар пользователя
Просветленный
1
     GameProcces(hero.hp);   

Попытка получить прямой доступ к приватному полю hp.

Аватар пользователя
Ученик

Модификатор доступа у Entity не тот

Аватар пользователя
Ученик

Уточните пожалуйста

Аватар пользователя
Ученик

В начале определение переменных с модификатором private, а entity вы используете как public. Вот и все



Видео по теме