链表:错误:令牌之前的预期初始值设定项'<'
Linked List: error: expected initializer before '<' token
编译时收到错误"错误:'<'标记之前的预期初始值设定项",我需要创建一个链表,我需要将其中一个函数转换为赋值的模板,我想知道如何解决我收到的错误。
#ifndef LINK_H
#define LINK_H
class link {
public:
int data;
link *lnkPtr;
};
class linked
{
private:
link *head;
public:
linked(){head = nullptr;}
~linked(){};
void nodeEnd(link *, double num);
template <class T>
T nodeBeg<T>(link *, T num);
void nodeIst(link *, double num);
void nodeDel(link *, double num);
link fillLst(int);
void prntLst(link *);
void destLst(link *);
link endLst(link *);
//void addlink(link *, int);
};
template <class T>
T linked<T>::nodeBeg(link* , T num)
{
link *newNode; // To point to a new node
link *nodePtr; // To move through the list
// Allocate a new node and store num there.
newNode = new link;
newNode->data = num;
newNode->lnkPtr = nullptr;
// If there are no nodes in the list
// make newNode the first node.
if (!head)
head = newNode;
else // Otherwise, insert newNode at end.
{
// Initialize nodePtr to head of list.
nodePtr = head;
// Find the last node in the list.
// while (!nodePtr->linkPtr)
nodePtr = nodePtr->lnkPtr;
nodePtr->lnkPtr = head; //inserts at beginning
}
}
#endif /* LINK_H */
从T nodeBeg<T>(link *, T num);
和T linked<T>::nodeBeg(link* , T num)
中删除<T>
。T nodeBeg(link *, T num)
和 T linked::nodeBeg(link* , T num)
将告诉编译器在编译时推断返回类型。此外,函数nodeBeg
和类linked
都不是模板,因此您不需要<T>
。
删除标识符后面的<T>
。 id 是专用化之后的参数列表意味着模板专用化。
是两个不同的东西..成员可以是模板类中的模板,也可能不是,或者类可能是模板。 如果模板类的成员是模板,它有两个参数列表。
template<typename T1>
struct string {
// member template function
template<typename T2>
int compare(const T2&);
// constructors can be templates too
template<typename T2>
string(const std::basic_string<T2>& s) { /*...*/ }
};
// out of class definition of string<T1>::compare<T2>
template<typename T1> // for the enclosing class template
template<typename T2> // for the member template
int string<T1>::compare(const T2& s) { /* ... */ }
(从 http://en.cppreference.com/w/cpp/language/member_template (
代码中存在一些语法错误。
nodeBeg
是一个函数模板。
它的声明应如下所示:
template <class T> T nodeBeg(link *, T num);
定义应如下:
template <class T> T linked::nodeBeg(link*, T num) {/*...*/}
在这里,您必须将linked::
附加到函数名称,以告诉编译器您在此处定义类linked
的成员nodeBeg
。
相关文章:
- 如何在C++中使用X509证书模在令牌中查找私钥
- holeMenuProgram.cpp:38:1 错误:'}'令牌之前的预期主表达式
- C++:"("令牌"之前有预期的非限定 id 指向类中成员函数的指针
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 错误:令牌 { '{' 之前应存在非限定 ID
- 允许哪些令牌作为 #include 的参数?
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 它在 { 令牌之前给了我预期的标识符
- (错误:令牌之前'<<'预期的主表达式)
- 为什么 ## aka 令牌粘贴运算符不适用于 C 和 C++ 中的注释?
- 错误:"->"令牌之前的预期初始值设定项
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 丢失读入的每一行输入中的最后一个令牌
- 如何使用 libCurl 将访问令牌发送到服务器 API
- C++令牌定义成员
- 宏定义中的预处理器令牌两边有两个双引号
- 错误:C++中']'令牌之前的预期主表达式
- 错误:令牌之前的预期主表达式'&&'
- 令牌之前']'预期的主表达式?
- '&lt;'''&lt;'''&quot的模板类错误''令牌”