构造函数不允许返回类型(通用链表) 我试图用模板在C++中生成一个通用链表。但是我得到了这个错误“GenericNode::{ctor}”:构造函数不允许返回类型,通过它我不可能知道我做错了什么? 另外,我也看过其他关于堆栈溢出的文章,其中说错误是由于类定义后缺少分号造成的,但我认为我没有“缺少分号”的情况。有什么帮助吗
代码: GenericLinkedList.h:构造函数不允许返回类型(通用链表) 我试图用模板在C++中生成一个通用链表。但是我得到了这个错误“GenericNode::{ctor}”:构造函数不允许返回类型,通过它我不可能知道我做错了什么? 另外,我也看过其他关于堆栈溢出的文章,其中说错误是由于类定义后缺少分号造成的,但我认为我没有“缺少分号”的情况。有什么帮助吗,c++,templates,linked-list,C++,Templates,Linked List,代码: GenericLinkedList.h: #pragma once template <typename Datatype> class GenericNode { Datatype T; GenericNode *next; public: GenericNode() {} GenericNode(Datatype T); }; template<typename Datatype> void GenericNode&
#pragma once
template <typename Datatype>
class GenericNode {
Datatype T;
GenericNode *next;
public:
GenericNode() {}
GenericNode(Datatype T);
};
template<typename Datatype>
void GenericNode<Datatype>::GenericNode(Datatype data) {
T = data;
}
template <typename Datatype>
class GenericLinkedList {
GenericNode *Data;
public:
GenericLinkedList() {
Data = NULL;
}
int isEmpty();
void addDataAtFront(Datatype data);
void addDataAtEnd(Datatype data);
void print();
};
template <typename Datatype>
int GenericLinkedList<Datatype>::isEmpty() {
return Data == NULL;
}
template <typename Datatype>
void GenericLinkedList<Datatype>::addDataAtFront(Datatype data) {
GenericNode *newNode, *tmpNode;
newNode = new Node;
newNode->T = data;
newNode->next = NULL;
if (Data == NULL) {
Data = newNode;
}
else {
tmpNode = Data;
Data = newNode;
Data->next = tmpNode;
}
}
template <typename Datatype>
void GenericLinkedList<Datatype>::addDataAtEnd(Datatype data) {
GenericNode *newNode, *tmpNode;
newNode = new Node;
newNode->T = data;
newNode->next = NULL;
if (Data == NULL) {
Data = newNode;
}
else {
tmpNode = Data;
while (tmpNode->next != NULL) {
tmpNode = tmpNode->next;
}
tmpNode->next = newNode;
}
}
template <typename Datatype>
void GenericLinkedList<Datatype>::print() {
GenericNode tmpNode;
tmpNode = Data;
for (tmpNode;tmpNode != NULL;tmpNode = tmpNode->next) {
cout << tmpNode->T << " ";
}
}
#pragma一次
模板
类GenericNode{
数据类型T;
GenericNode*下一步;
公众:
GenericNode(){}
GenericNode(数据类型T);
};
模板
void GenericNode::GenericNode(数据类型数据){
T=数据;
}
模板
类GenericLinkedList{
GenericNode*数据;
公众:
GenericLinkedList(){
数据=空;
}
int是空的();
void addDataAtFront(数据类型数据);
void addDataAtEnd(数据类型数据);
作废打印();
};
模板
int GenericLinkedList::isEmpty(){
返回数据==NULL;
}
模板
void GenericLinkedList::addDataAtFront(数据类型数据){
GenericNode*newNode,*tmpNode;
newNode=新节点;
newNode->T=数据;
newNode->next=NULL;
如果(数据==NULL){
数据=新节点;
}
否则{
tmpNode=数据;
数据=新节点;
数据->下一步=tmpNode;
}
}
模板
void GenericLinkedList::addDataAtEnd(数据类型数据){
GenericNode*newNode,*tmpNode;
newNode=新节点;
newNode->T=数据;
newNode->next=NULL;
如果(数据==NULL){
数据=新节点;
}
否则{
tmpNode=数据;
while(tmpNode->next!=NULL){
tmpNode=tmpNode->next;
}
tmpNode->next=newNode;
}
}
模板
void GenericLinkedList::print(){
通用节点tmpNode;
tmpNode=数据;
for(tmpNode;tmpNode!=NULL;tmpNode=tmpNode->next){
cout模板
void GenericNode::GenericNode(数据类型数据){
T=数据;
}
您编写返回类型void。它是一个构造函数。void GenericNode::GenericNode(数据类型数据)
移除void它是一个构造函数。构造函数不返回,也没有返回类型。void
是多余的。@songyuanyao不是多余的,只是定义构造函数时不允许。哦,我的天啊!我觉得太傻了:(是的,我犯了个愚蠢的错误!:/anyways谢谢!
#include <iostream>
#include <conio.h>
#include "GenericLinkedList.h"
using namespace std;
int main() {
GenericLinkedList<int> T;
T.addDataAtFront(5);
T.addDataAtEnd(6);
T.addDataAtFront(4);
T.print();
_getch();
}
template<typename Datatype>
void GenericNode<Datatype>::GenericNode(Datatype data) {
T = data;
}