Мне нужно создать связанный список с шаблоном, но я понятия не имею, почему он не работает, я уже создал связанные списки, но никогда не с шаблонами. Сейчас моя проблема заключается в том, что, если я создаю список все нормально, но когда я пытаюсь вставить что-нибудь к нему, я получаю следующие ошибки:Связанный список с шаблоном
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'? Также 'class D' не определен.'listaSimple NewList' все неправильно, вы, вероятно, имеете в виду' linkedList NewList', где мой 'D' - это некоторый класс, который не показан. –