【发布时间】:2014-06-05 19:40:14
【问题描述】:
好的,我最近有点类似的问题,但是我在发布时感到疲倦和匆忙。基本上,我有这个父类Unit,它包含一个指向Ability 类的指针向量。
public:
vector <Ability*> myAbilities;
我还有一个内置到类中的函数来添加new Ability,以便更轻松地为Unit开发和添加新技能
void AddAbility(Ability * ability)
{
myAbilities.push_back(ability);
cout<<"Ability added"<<endl;
cout<<ability->GetName()<<endl;
}
当我使用它时,它看起来像这样:
AddAbility(new Fireball());
现在,我的问题是当我测试火球信息是否仍然存在时,它不像调用AddAbility() 函数时那样显示。
#include <iostream>
#include <string>
#include "Profession.h"
using namespace std;
int main()
{
// Player being a child class of Unit
Player * player1 = new Mage;
system("pause");
player1->myAbilities[0]->GetName();
system("pause");
delete player1;
player1 = NULL;
return 0;
}
我的输出如下所示:
能力增加
火球
按任意键继续...
按任意键继续...
该技能的名称似乎不再存在,因为它应该在第一次暂停后第二次显示“火球”。我希望我清楚地解释了这一点并提供了足够的信息,因为每次我尝试研究指针参数(或通过指针传递)时,它总是向我展示有关函数指针的内容。
【问题讨论】:
-
Mage的构造函数是什么? -
您的问题未能确定导致问题的代码的足够部分。
-
它拒绝让我编辑,所以我的构造函数是:Mage::Mage() { myName = "---"; myRoleName = "法师";我的角色 = 法师;我的健康= 100;我的法力 = 50;我的防御 = 5;我的伤害 = 10;我的魔法伤害 = 10;我的魔法防御 = 3; AddAbility(新火球()); }
标签: c++ function class pointers vector