从 C++ 模板类继承的问题
problems inheriting from a c++ template class
所以我正在尝试弄清楚当模板混合时继承是如何工作的。大多数编译器似乎还没有弄清楚这一点,所以我在语法上遇到了一点困难。SkipNode.h中所有奇怪的内容都是试图让日食停止对我大喊大叫。尝试在 SkipNode.h 中声明构造函数时出现语法错误,因此此处的任何帮助都会很有用。
这里是节点.h
#ifndef NODE_H_
#define NODE_H_
template<class T>
class Node
{
public:
Node(Node<T>* next, Node<T>* prev, T item);
virtual ~Node();
Node* getPrev() { return prev;};
Node* getNext() { return next;};
Node* getItem() { return item;};
void setItem(T item){Node<T>::item = item;};
void setNext(Node* next){Node<T>::next = next;};
void setPrev(Node* prev){Node<T>::prev = prev;};
private:
Node* next;
Node* prev;
T item;
};
这里是 SkipNode.h,skipnode 继承自 Node。
#include "Node.h"
#include "Node.cpp"
#include "SkipNode.h"
#include "SkipNode.cpp"
template <class T>
class SkipNode: public Node
{
public:
SkipNode(Node<T>* next, Node<T>* prev, Node<T>* child, T item) : Node(next, prev, item);
virtual ~SkipNode();
Node* getChild(){return child;};
void setChild(Node* child){SkipNode::child = child;};
private:
Node *child;
};
#endif /* SKIPNODE_H_ */
Node
是一个模板,你应该传入模板参数
template <class T>
class SkipNode: public Node<T>
// ^^^
您还需要提供SkipNode
构造函数定义,因为您已经提供了member iniatilizer list
。
更新:
SkipNode(Node<T>* next, Node<T>* prev, Node<T>* child, T item)
: Node(next, prev, item);
自:
SkipNode(Node<T>* next, Node<T>* prev, Node<T>* child, T item)
: Node(next, prev, item)
{
}
node.h 中缺少一个#endif
,您需要向基类提供模板参数:
template <class T>
class SkipNode : public Node< T >
....
存在此间接寻址级别以允许具有不同(或零)模板参数的类从模板类继承。例如:
class Foo : public Node< int >
相关文章:
- 模板继承问题
- 我是否需要在虚拟继承类的构造函数中初始化基类以解决菱形继承问题?
- SIGSEGV 因为基/派生类的继承问题
- C++解决没有虚拟继承的钻石继承问题
- Arduino C 中的继承问题
- C++ 继承问题:未定义对"vtable"的引用
- 班级设计和继承问题
- C 继承问题错误C2084功能已经具有主体
- 如何在C++中解决网格继承问题
- 多重继承问题 C++
- "{"令牌 c++ 继承问题之前的另一个预期类名
- C 模板继承问题(警告和错误)
- 协助解决C++的继承问题
- 在我的示例中,实际上有一些C 继承问题
- 继承问题
- C++继承问题
- C++初学者继承问题
- 公共/受保护/私有继承问题
- 函数继承问题
- 引用类型和继承问题