用于存储通用对象的C ++链接列表节点

时间:2014-03-19 22:41:00

标签: c++ oop pointers nodes

如果您有一个存储整数的浮点或某种类型的对象的通用节点,您如何在节点中存储通用对象?

typedef struct node{
      Dog data;
      node* next;
  }*nodePtr;

此节点存储Dog对象...我如何存储通用对象?

我的一个想法是让Dog对象和所有其他对象继承自更通用的Object类。 除了使用模板之外的好方法吗?

3 个答案:

答案 0 :(得分:4)

C ++为泛型提供template<>

template<typename T>
struct node {
    T data;
    node<T> *next;
}

答案 1 :(得分:2)

制作模板,如下所示:

template<typename T>
struct Node
{
    T data;
    Node<T> *next;
};

查找模板信息的一个很好的资源可以是例如维基百科。

答案 2 :(得分:1)

  

我的一个想法是让Dog对象和所有其他对象继承自更通用的Object类。好的方法?

如果类型都有共同点,请为它们创建公共基本类型。如果没有,那就不要。

不要仅仅因为你想将它们全部存储在同一个容器中而使这些类型从一个公共库中派生出来。你倒退了。 如果要将所有类型存储在同一个容器中,那么 应该已经有了共同点。否则你的容器只是一个位序列。对于每种类型的单独容器,没有什么能做得更好。例如,你不能遍历容器并在每个元素上调用一个方法,因为它不会 一个所有元素都有的方法!

你说,

  

很好的答案,但我希望通过OO原则来实现。

OO的基本原则之一,即IMO,所有类都应该是有意义的。这并不意味着它们必须对应于具体对象,甚至包含任何实现,但它们必须至少包含一些接口。 C ++中的通用Object类没有意义。别创造一个。