因此,我在另一个类中创建了一个辅助函数,但该函数无法编译。
这是错误
Undefined symbols for architecture x86_64:
"move(sc2::Unit const*, sc2::Unit const*)", referenced from:
Ihurt_Multi_Unit_Bot::OnStep() in battle_simulator.cc.o
我称之为移动功能。
virtual void OnStep()
{
Units alive = Observation()->GetUnits();
for (int i = 0; i<alive.size(); i++)
{
if (alive[i]->unit_type == 9)
enemy = alive[i];
if ((Observation()->GetGameLoop() % 2) == 0)
{
if (alive[i]->unit_type == 48)
{
move(alive[i], enemy);
}
}
函数的类
void move(const Unit* unit, const Unit* enemy);
class commands : public Agent
{
commands() = default;
void move(const Unit* unit, const Unit* enemy)
{
Point2D moveto;
double path = Query()->PathingDistance(unit->pos, enemy->pos);
if (path < Observation()->GetUnitTypeData()[enemy->unit_type].weapons.front().range)
{
moveto = getBestMove(unit->pos, enemy->pos);
Actions()->UnitCommand(unit, ABILITY_ID::MOVE, moveto);
}
}
答案 0 :(得分:1)
如果我们将您的代码简化为最少的示例,那么问题可能更明显了:
void move();
class commands
{
public:
void move()
{
}
};
int main()
{
move();
}
您已经声明并正在调用自由函数move
,但仅在move
类内定义了方法commands
。
根据您要达到的目标,有多种解决方法。最好的办法可能只是删除move函数并调用方法:
class commands
{
public:
void move()
{
}
};
int main()
{
commands cmds;
cmds.move();
}