C++ c++;模板类成员函数,依赖于其他模板类
我试图创建一个链表类,该类使用一个节点类作为列表中的节点(下一个节点,数据)。链表类充当包含成员函数的列表的标题,可以与任何数据类型(即模板)一起使用。我很难理解模板在类声明和成员函数实现中是如何工作的 我有两个链接列表模板类(以下是相关部分):C++ c++;模板类成员函数,依赖于其他模板类,c++,templates,C++,Templates,我试图创建一个链表类,该类使用一个节点类作为列表中的节点(下一个节点,数据)。链表类充当包含成员函数的列表的标题,可以与任何数据类型(即模板)一起使用。我很难理解模板在类声明和成员函数实现中是如何工作的 我有两个链接列表模板类(以下是相关部分): 模板 类ListNode { 公众: 节点对象类型数据; ListNode*下一步; ListNode():下一个(NULL){} ListNode(const NodeObjectType&item,ListNode*nextNode=NULL) {
模板
类ListNode
{
公众:
节点对象类型数据;
ListNode*下一步;
ListNode():下一个(NULL){}
ListNode(const NodeObjectType&item,ListNode*nextNode=NULL)
{
数据=项目;
next=nextNode;
}
};
样板
类myList
{
公众:
myList()
{
Head=NULL;
}
//其他成员功能。。。
布尔包含(对象类型x)
{
ListNode*当前=头部;
while(当前!=NULL)
{
如果(当前->数据==x)
返回true;
当前=当前->下一步;//前进一步
}
返回false;
}
无效添加(ObjectType x)
{
如果(!包含(x))
{
ListNode*NewListNode(x,头);
Head=NewListNode;
}
}
私人:
ListNode*头;
};
在编译时,我得到了错误
In instantiation of 'void myList<ObjectType>::add(ObjectType) [with ObjectType = int]':
required from here
error: expression list treated as compound expression in initializer [-fpermissive]
在“void myList::add(ObjectType)[with ObjectType=int]的实例化中:
从这里开始需要
错误:表达式列表在初始值设定项[-fppermissive]中被视为复合表达式
我是在错误地传递模板对象类型,还是其他原因?谢谢你这句话:
ListNode<ObjectType>* NewListNode(x , Head);
ListNode*NewListNode(x,头);
应该是:
ListNode<ObjectType>* NewListNode = new ListNode<ObjectType>(x , Head);
// ~~~~~~~~~~~~~~~~~~~~~~~~~^
ListNode*NewListNode=NewListNode(x,Head);
// ~~~~~~~~~~~~~~~~~~~~~~~~~^
这与模板无关<代码>tx(a,b)在堆栈上生成一个T
,并将a
和b
传递给构造函数<代码>T*px=新的T(a,b)在堆上生成一个T
,将a
和b
传递给构造函数<代码>T*px(a,b)代码>是一个弗兰肯斯坦式的混乱,这是一个语法错误。啊,我现在看到了,谢谢。
ListNode<ObjectType>* NewListNode = new ListNode<ObjectType>(x , Head);
// ~~~~~~~~~~~~~~~~~~~~~~~~~^