我需要建立一個鏈接列表與模板,但我不知道爲什麼不工作,我已經建立鏈接列表之前,但從來沒有模板。現在我的問題是,如果我創建的列表中一切正常,但是當我嘗試插入的東西給它,我得到以下錯誤:鏈接列表模板
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'是一些沒有顯示的類。 –