我需要建立一个链接列表与模板,但我不知道为什么不工作,我已经建立链接列表之前,但从来没有模板。现在我的问题是,如果我创建的列表中一切正常,但是当我尝试插入的东西给它,我得到以下错误:链接列表模板
Error C2664 'Nodo<D>::Nodo(Nodo<D> &&)': cannot convert argument 1 from 'const int' to 'const Nodo<D> &' Datos2 d:\google drive\visual studio 2015\projects\datos2\datos2\listaSimple.h 69
Error C2664 'Nodo<D>::Nodo(Nodo<D> &&)': cannot convert argument 1 from 'const int' to 'const Nodo<D> &' Datos2 d:\google drive\visual studio 2015\projects\datos2\datos2\listaSimple.h 73
我下面的代码:
//linkedList.h
#pragma once
#ifndef _LISTASIMPLE_H
#define _LISTASIMPLE_H
template<class D>
struct Nodo
{
int carga;
int binario;
D caracter;
Nodo<D> *Siguiente;//means next
};
template<class D>
class listaSimple
{
public:
listaSimple();
~listaSimple();
void InsertarInicio(const D&);
bool ListaVacia();
void Mostrar();
private:
Nodo<D> *primero;
Nodo<D> *ultimo;
};
template<class D>
listaSimple<D>::listaSimple()
{
primero = NULL;
}
template<class D>
listaSimple<D>::~listaSimple()
{
Nodo<D> *aux;
while (primero != NULL)
{
aux = primero;
primero = primero->Siguiente;
delete aux;
}
}
template<class D>
void listaSimple<D>::InsertarInicio(const D& dato)
{
if (ListaVacia())
{
primero = new Nodo<D>(dato);
}
else
{
Nodo<D> *nodoNuevo = new Nodo<D>(dato);
nodoNuevo->Siguiente = primero;
primero = nodoNuevo;
}
}
template<class D>
bool listaSimple<D>::ListaVacia()
{
if (primero == NULL)
{
return true;
}
else
{
return false;
}
}
template<class D>
inline
void listaSimple<D>::Mostrar()
{
Nodo<D> *aux = primero;
while (aux != NULL)
{
cout << aux->caracter << "->";
aux = aux->Siguiente;
}
}
和
//Source.cpp
#include <iostream>
#include <string>
#include "linkedList.h"
using namespace std;
int main() {
listaSimple<int> Nueva;
Nueva.InsertarInicio(5);
system("pause");
return 0;
}
'if(EmptyList)'是实际的代码吗?因为你似乎想调用这个函数,在这种情况下你会丢失括号,例如:'if(EmptyList())' – UnholySheep
@UnholySheep yep,对不起,翻译错误。谢谢指出它 – Twhite1195
什么是'Siguiente'?也没有定义'D类'。'listaSimple NewList'全错了,你可能是指'linkedList NewList',我的'D'是一些没有显示的类。 –