C++ C++;访问其他实例';面向对象的数据处理

C++ C++;访问其他实例';面向对象的数据处理,c++,class,oop,instance,C++,Class,Oop,Instance,我的OOP作业有问题。我必须编写一个1对1的战斗,考虑到以下几点: 回合顺序、命中率和伤害加成 所有这三项都依赖于攻击者和防御者的统计数据 我的问题是,如何从同一类的其他实例访问数据?因为我有一个函数opponentSpawner(),它创建了我的Unit类的另一个实例 你能帮我理解我做错了什么吗 这是我的头文件(Unit.h): #pragma一次 #包括 班级单位 { 公众: //构造函数和析构函数 单位(); ~Unit(); //吸气剂 std::string getName(); st

我的OOP作业有问题。我必须编写一个1对1的战斗,考虑到以下几点:

回合顺序、命中率和伤害加成

所有这三项都依赖于攻击者和防御者的统计数据

我的问题是,如何从同一类的其他实例访问数据?因为我有一个函数
opponentSpawner()
,它创建了我的Unit类的另一个实例

你能帮我理解我做错了什么吗

这是我的头文件(Unit.h):

#pragma一次
#包括
班级单位
{
公众:
//构造函数和析构函数
单位();
~Unit();
//吸气剂
std::string getName();
std::string getCharClass();
int getHp();
int getPow();
int getVit();
int getAgi();
int getDex();
//基本功能
void createCharacter();
无效();
void printStats();
int攻击();
int checkClass();
私人:
std::字符串mName;
std::字符串mCharClass;
int mHp;
int mPow;
int-mVit;
int mAgi;
int-mDex;
};
这是我的.cpp文件(Unit.cpp):

#包括“Unit.h”
#包括
#包括
#包括
单位::单位()
{
}
单位::~Unit()
{
}
std::string Unit::getName()
{
返回mName;
}
std::字符串单元::getCharClass()
{
返回mCharClass;
}
int单位::getHp()
{
返回mHp;
}
int单位::getPow()
{
返回mPow;
}
int单位::getVit()
{
返回mVit;
}
int单位::getAgi()
{
返回mAgi;
}
int单位::getDex()
{
返回mDex;
}
void单元::createCharacter()
{
智力选择;
std::字符串名;

std::cout如果要访问opponentSpawner中的第一个实例,可以从method参数传递实例

i、 e

void opponentSpawner(Unit* u);

如果要访问在opponentSpawner中创建的实例,请在main外部访问

你可以用

 Unit* opponentSpawner();

为什么你需要访问另一个实例的数据?你想实现什么?@developerbmw有一些函数需要我在程序中战斗的对手的统计数据。所以我想知道如何访问他们的统计数据才能完成函数
attack()
checkClass()
?停止使用new-这里没有必要冒内存泄漏的风险。你的单位有getter,你不能调用它们吗?每个程序只调用
srand
一次。为什么要在这里使用另一个实例。你可以使用
void opponentSpawner(单位*)将第一个实例传递给
opponentSpawner
是的,我想我也不应该使用new,但是我们的教授特别要求我们使用它。关于
srand
,我将把它放在
int main()之后第一行的主cpp上
好的!非常感谢!我将尝试将其纳入我的工作中。我将在更新中报告。@AlfredIntal,如果这解决了您的问题,如果您将其标记为正确,那就太好了。
#include "Unit.h"
#include <iostream>
#include <string>

void opponentSpawner();

int main()
{

    Unit* unit1 = new Unit();
    unit1->createCharacter();
    unit1->printStats();
    system("pause");
    system("cls");

    opponentSpawner();
    system("pause");
    system("cls");

    system("pause");
    return 0;
}

void opponentSpawner()
{
    // Flavor texts
    std::cout << "An enemy is approaching the Arena!" << std::endl;
    system("pause");
    system("cls");

    Unit* unit2 = new Unit();
    unit2->createOpponent();
    unit2->printStats();

}
void opponentSpawner(Unit* u);
 Unit* opponentSpawner();