Как использовать одни и те же объекты класса и их методы в разных функциях?

Вот например, у меня есть класс Animal и есть его 3 объекта, я хочу из разных функций взаимодействовать с одними и теми же объектами и их методами, вопрос как это сделать?

Ниже показан код выбора одного из объектов класса Animal, и нужно сделать так чтобы в функции func я мог изменять данные и вызывать методы объектов класса Animal

#include <iostream>
#include <ctime>
#include <random>
#include <windows.h>

using namespace std;


class Animal
{
    public:
    string name;
    int age;

// characteristics default

int speed = 0;
int strengh = 0;
int intelligence = 0;
int movement = 0;
int playable = 0;


// constructor

Animal(string name_ , int speed_, int strengh_, int intelligence_, int movement_, int playable_)
{
    this->name = name_;
    this->speed = speed_;
    this->strengh = strengh_;
    this->intelligence = intelligence_;
    this->movement = movement_;
    this->playable = playable_;
}


// characteristics LvL UP

void CharacteristicsLvLUp(int speed_, int strengh_, int intelligence_, int movement_, int playable_)
{
    this->speed += speed_;
    this->strengh += strengh_;
    this->intelligence += intelligence_;
    this->movement += movement_;
    this->playable += playable_;
}


// characteristics print

void CharacteristicsPrint()
{
    cout << "Скорость -> " << speed << endl <<
        "Сила -> " << strengh << endl <<
        "Интеллект -> " << intelligence << endl <<
        "Подвижность -> " << movement << endl <<
        "Игривость -> " << playable << endl;
}
};


int main()
{
setlocale(LC_ALL, "ru");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

string EnterName;
int ChosePet;


Animal Turtle(EnterName, 5, 7, 9, 6, 8);
Animal Cat(EnterName, 10, 5, 9, 10, 12);
Animal Dog(EnterName, 11, 7, 12, 10, 11);


cout << "Выберите питомца: " << endl <<
    "1 -> Черепашка" << endl << "2 -> Кот" << endl << "3 -> Собака" << endl;
cin >> ChosePet;


switch (ChosePet)
{
case 1:
    cout << "Вы выбрали черепашку!" << endl;

    cout << "Дай имя новому питомцу" << endl;
    cin >> EnterName;
    cout << "Теперь вашего питомца теперь зовут " << EnterName << "!" << endl;
    cout << endl;

    cout << "Вот характеристики вашего " << EnterName << endl;
    Turtle.CharacteristicsPrint();

    break;
case 2:
    cout << "Вы выбрали кота!" << endl;

    cout << "Дай имя новому питомцу" << endl;
    cin >> EnterName;
    cout << "Теперь вашего питомца теперь зовут " << EnterName << "!" << endl;
    cout << endl;

    cout << "Вот характеристики вашего " << EnterName << endl;
    Cat.CharacteristicsPrint();

    break;
case 3:
    cout << "Вы выбрали собаку!" << endl;

    cout << "Дай имя новому питомцу" << endl;
    cin >> EnterName;
    cout << "Теперь вашего питомца зовут " << EnterName << "!" << endl;
    cout << endl;

    cout << "Вот характеристики вашего " << EnterName << endl;
    Dog.CharacteristicsPrint();

    break;
default:
    cout << "Нет питомца под таким номером!" << endl;
    break;
}

return 0;
}

void func()
{
    // тут надо взаимодействовать с объектами класса <-----
}

Ответы (1 шт):

Автор решения: ManyBytes

Если я правильно Вас понял, Вам необходимо использовать ссылку на класс Animal:

void func1(Animal& animal)
{
    cout << "Имя животного: " << animal.name << '\n';
    cout << "Характеристики животного:\n"
    animal.CharacteristicsPrint();
}

void func2(Animal& animal)
{
    animal.name = "dog";
}

int main()
{
    Animal cat(...);
    func1(cat);
    func2(cat);
}
→ Ссылка