【发布时间】:2014-04-29 10:21:39
【问题描述】:
一段时间以来,我一直在用头撞砖墙来解决这个问题。希望我能在这里得到一些帮助。
基本上,我的游戏有一个包含许多不同对象的库存系统。有从基类 Object 派生的不同类,它们使用虚函数以便对相同的函数调用具有不同的行为。
最初,我有一个清单清单以及一个 list::iterator invIter。迭代器会调用库存中正确对象所需的函数,但只会调用基类函数。我从另一个答案中读到,这样做的原因是因为这样做时你失去了多态性,但有一个指针列表可以解决它。
所以我更改了列表和迭代器,使它们成为对象指针,并找到了访问清单对象的函数和变量的所谓正确方法。但是,当这些函数或变量在运行时被访问时,程序会出现未处理的异常并中断。
这是导致问题的我的代码....
标题
#include "Object.h"
#include <vector>
#include <list>
using namespace std;
class Player
{
public:
Player();
void addItem(Object);
void printInventory();
list<Object*> inventory;
private:
list<Object*>::iterator invIter;
};
cpp
#include "Player.h"
#include "Object.h"
#include <iostream>
Player::Player()
{
}
void Player::addItem(Object newItem)
{
inventory.push_back(&newItem);
return;
}
void Player::printInventory()
{
cout << "YOU ARE CARRYING: \n";
for(invIter=inventory.begin(); invIter!=inventory.end(); ++invIter)
{
cout << (*invIter)->getName() << ", ";
}
cout << "\nPRESS RETURN TO CONTINUE...";
cin.ignore(1);
return;
}
非常感谢任何帮助,老实说,我自己也遇到了死胡同。
【问题讨论】:
标签: c++ list pointers iterator polymorphism