Life Sucks
Cadet 2nd Year
- Registriert
- Juli 2018
- Beiträge
- 29
beim Debuggen kommt folgen Fehlermeldung:
Fehler C2665 "std::to_string": Durch keine der 9 Überladungen konnten alle Argumenttypen konvertiert werden. 09-03 c:\...\my_templlist.cpp 32
Die Variante ohne Templates funktioniert super. Sitze seit stunden daran und finde keine Lösung.
Zur Info: Ich müsste eine einfache verkettete Liste in Benutzung von Templates erstellen.
my_templist.cpp:
my_templlist.h:
main.cpp:
Fehler C2665 "std::to_string": Durch keine der 9 Überladungen konnten alle Argumenttypen konvertiert werden. 09-03 c:\...\my_templlist.cpp 32
Die Variante ohne Templates funktioniert super. Sitze seit stunden daran und finde keine Lösung.
Zur Info: Ich müsste eine einfache verkettete Liste in Benutzung von Templates erstellen.
my_templist.cpp:
C++:
#include "my_templlist.h"
template <typename T>
void hinten_anfuegen(TListenKnoten<T>* &anker, const T wert)
{
TListenKnoten<T> *neuer_eintrag = new TListenKnoten<T>;
neuer_eintrag->data = wert;
neuer_eintrag->next = nullptr;
if (anker == nullptr)
anker = neuer_eintrag;
else
{
TListenKnoten<T> *ptr = anker;
while (ptr->next != nullptr)
ptr = ptr->next;
ptr->next = neuer_eintrag;
}
}
template <typename T>
std::string liste_als_string(TListenKnoten<T>* anker)
{
std::string resultat = "";
if (anker == nullptr)
return "Leere Liste."; // Zeile geändert !!!!!!!!!!!!!!
else
{
resultat += "[ ";
TListenKnoten<T> *ptr = anker;
do
{
resultat += std::to_string(ptr->data);
if (ptr->next != nullptr) resultat += " , ";
else resultat += " ";
ptr = ptr->next;
} while (ptr != nullptr);
resultat += "]";
}
return resultat;
}
template <typename T>
void liste_ausgeben(TListenKnoten<T>* anker)
{
std::cout << liste_als_string(anker) << std::endl;
}
template <typename T>
void vorne_anfuegen(TListenKnoten<T>* &anker, const T wert)
{
TListenKnoten<T> *neuer_eintrag = new TListenKnoten<T>;
neuer_eintrag->data = wert;
neuer_eintrag->next = nullptr;
int x = 0;
if (anker == nullptr)
anker = neuer_eintrag;
else
{
neuer_eintrag->next = anker;
anker = neuer_eintrag;
}
}
template <typename T>
void liste_loeschen(TListenKnoten<T>* &anker)
{
TListenKnoten<T>* ptr = anker, *ptr2 = nullptr;
while (ptr != nullptr)
{
ptr2 = ptr->next;
delete ptr;
ptr = ptr2;
}
anker = nullptr;
}
template <typename T>
T liste_aufaddieren(const T var_a, const T var_b)
{
return var_a + var_b;
}
// Expliziete Instanziierungen
template struct TListenKnoten<int>;
template void hinten_anfuegen<int>(TListenKnoten<int> *&anker, const int wert);
template std::string liste_als_string<int>(TListenKnoten<int> * anker);
template void liste_ausgeben<std::string>(TListenKnoten<std::string> * anker);
template void vorne_anfuegen<int>(TListenKnoten<int> *&anker, const int wert);
template void liste_loeschen<int>(TListenKnoten<int>* &anker);
my_templlist.h:
C++:
#pragma once
#include <iostream>
#include <string>
template <typename T> struct TListenKnoten
{
T data;
TListenKnoten<T> *next;
};
template <typename T>
void hinten_anfuegen(TListenKnoten<T>* &anker, const T wert);
template <typename T>
std::string liste_als_string(TListenKnoten<T>* anker);
template <typename T>
void liste_ausgeben(TListenKnoten<T>* anker);
template <typename T>
void vorne_anfuegen(TListenKnoten<T>* &anker, const T wert);
template <typename T>
void liste_loeschen(TListenKnoten<T>* &anker);
template <typename T>
T liste_aufaddieren(const T var_a, const T var_b);
main.cpp:
C++:
#include <iostream>
#include <string>
using namespace std;
#include "my_templlist.h";
int main()
{
int laenge = 3;
TListenKnoten<int> *anker = nullptr;
liste_ausgeben(anker);
/*for (int i = 0; i < laenge; i++)
hinten_anfuegen<int>(anker, i*i);
liste_ausgeben(anker);
for (int i = 0; i < laenge; i++)
vorne_anfuegen<int>(anker, i*i);
liste_ausgeben(anker);
liste_loeschen<int>(anker);
for (int i = 0; i < laenge; i++)
vorne_anfuegen<int>(anker, i*i);
liste_ausgeben(anker);
for (int i = 0; i < laenge; i++)
vorne_anfuegen<int>(anker, i*i);
liste_ausgeben(anker);*/
system("PAUSE");
return 0;
}