tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von sheel
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
372
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Svsoko Svsoko ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    4
    Hallo, ich möchte eine einfach Verkette Liste mittels Template realisieren. Sollte eig auch nicht so schwer sein, aber iwi flupt es noch nicht ganz. Ich bekomme diese beiden Fehlermeldung:


    Fehler 3 error C2512: 'item': Kein geeigneter Standardkonstruktor verfügbar \list.h 37
    Fehler 2 error C2955: "item": Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich. \list.h 37

    Jeglicher versuch das in den griff zu bekommen scheiterte bis jetz. Vll kann mir hier ja jmd auf die sprünge helfen, programmiere in C++ auch noch nicht so wirklich lang.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    
    #pragma once
    #include <iostream>
    using namespace std;
     
    template <typename T>
     
    struct _item {
       T element;
      _item<T>  *next;
     
    };
     
    template <typename T>
    class List
    {
        //Pointer auf das aktuelle Element der Liste
        _item<T>  *p ;
     
        //Pointer auf das Basis Element der Liste
        _item<T> *items  ;  
     
    public:
     
        List(void);
        ~List(void);
            
     void add(T item);
     void seek_last();
     T put(T item);
     
     
    };
     
    template <typename T>
    List<T>::List()
    {
      items = new _item;
      items->element = 0;
      items->next = NULL;   
      p = items; 
    }
     
    template <typename T>
    void List<T>::add(T item)
    {
      seek_last();
      p->next = new item;
      p = p->next; 
      p->element = item; 
      p->next = NULL;
    }
     
    template <typename T> 
    void List<T>::seek_last()
    {
      p = items; 
      while (p->next != NULL) 
        p = p->next;
    }
     
     
    template <typename T> 
    T List<T>::put(T item)
    {
      p = items;
      while (p->next->next!=NULL && 
             p->next->element!=item) 
        p = p->next;
     
      if (p->next->element==item) 
        return p->next->element;
      else return 0;
    }

    MFG
    Geändert von Svsoko (21.11.11 um 16:37 Uhr)
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi und Willkommen bei tutorials.de

    In Zeile 37 nennst du den Parameter item.
    Das wird mit der struct item verwechselt.
    Nimm einen anderen Namen, dann sollte alles passen.

    Gruß

    edit: Du hast da ja mehrere item-Parameter drin...
    kommt bei den Anderen keine Meldung?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Svsoko Svsoko ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    4
    Hallo und danke für das nette Wilkommen =).

    Hab den code gerad ma geupdatet struct heisst eig _item und nicht item, des weiteren sind die anderen variabeln items vom typ _item, hab mich da an nen altes java programm von mir gehalten, nicht die schönsten namen.

    Aber sind halt immer noch diese beiden fehler. Sonst aber keine anderen fehler/warnungen.
    Geändert von Svsoko (21.11.11 um 16:42 Uhr)
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Ist der Fehler noch immer Zeile 37?
    Nimm statt
    Code cpp:
    1
    
    items = new _item;
    das:
    Code cpp:
    1
    
    items = new _item<T>();
    Svsoko bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Du verwendest da Templates. Ein Template will erstmal instantiiert werden:
    Code cpp:
    1
    
     items = new _item<T>();
    Gruß
    Svsoko bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Svsoko Svsoko ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    4
    Boah 1000 dank, hätte den fehler warscheinlich erst morgen früh gefunden .

    Nun gehts wie es soll. =)

    Danke noch ma und noch nen schönen abend.
     

Ähnliche Themen

  1. Verkette Liste Eintrag verschwindet
    Von forsti222 im Forum Java
    Antworten: 3
    Letzter Beitrag: 10.01.11, 11:14
  2. In einer einfach Verkette Liste suchen
    Von Vippis im Forum C/C++
    Antworten: 13
    Letzter Beitrag: 05.01.11, 12:00
  3. Antworten: 2
    Letzter Beitrag: 18.03.09, 16:52
  4. Antworten: 2
    Letzter Beitrag: 11.03.06, 16:50
  5. verkette Liste dynamisch erweiterbar
    Von buschke im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 11.01.06, 14:36