c++ - C++中不同对象的多个链表

标签 c++ oop pointers linked-list singly-linked-list

考虑这些类(简化)

class Character 
{
public:
char name[20];
    char type[20];
    int strength;
};

class inventoryItem
{
public:
    char name[20];
};
class weapon: public inventoryItem
{
public:
    int magical resistance;
};
class spell: public inventoryItem
{
public:
   int magical power;
};

我写了一个链表的类(不允许使用STL列表)

class list
{
public:
struct listItem
{
    listItem* objectPointer;
    listItem* pnext;

}*phead;


list()
{
    phead=NULL;

}

bool isEmpty(){ 
if (!phead)
return true;
else
    return false;
}
void addToBack(listItem *itemtoadd)
{
    listItem *ptemp;
    listItem *ppast;
    listItem *pNewItem;

pNewItem=new listItem();

pNewItem->objectPointer=itemtoadd;
pNewItem->pnext=NULL;
if (phead==NULL)
    phead=itemtoadd;
else
{
      ptemp=phead;
      while(ptemp)
      {
     ptemp= ptemp->pnext;

      }
      ptemp->pnext=itemtoadd;

}

}

};

我已经减少了很多,但我的问题是,是否有一种简单的方法可以使用相同的列表类为所有这些创建链接列表?还是我在浪费时间?

每次我都尝试过,它无法将指针从“weapon”类型转换为“listitem”类型
我需要一个角色列表以及该角色的每种武器或法术的列表
我仍然是 OOP 和指针的初学者, 我现在编译的程序并且我有一个工作字符列表,但是该列表不是由它在其他一些函数中管理的类管理的,我希望有一种方法可以让一个类来处理这一切,任何人都可以帮忙给我解释一下?

最佳答案

看看C++ Templates .使用模板,您可以在读/写代码方面拥有一个列表类,但您可以拥有武器列表、元素列表或任何其他列表,而无需分别编写 WeaponsList、ItemsList 和 SomethingElseList 类。

关于c++ - C++中不同对象的多个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597724/

相关文章:

c++ - 未调用模板参数的静态断言

c++ - 我将如何读取外部文件

C++ 依赖注入(inject)方式——模板还是虚拟方法?

c++ - 我应该如何处理只应由工厂类使用的 setter 方法?

c - 某些 C 函数如何接受空参数?

c++ - C/C++ 中的链式赋值是未定义的行为吗?

c++ 使用 *& 作为参数(指针乐趣,三级树方法)

c++ - 按引用返回

c++如何将指针分配给二叉树中的父节点

c++ - C++/Qt 中变量的别名?