Dies ist eine spezifischere Frage zu einem Problem, mit dem ich bei dieser Aufgabe konfrontiert bin. Grundsätzlich besteht die Anweisung darin, eine Liste mit der AWL (anstelle einer verketteten Liste) zu erstellen. In den Beispielen sehe ich Sachen wie:C++ Liste nicht als Container erkannt?
#include <vector>
#include <iterator>
vector<char> container = { 'A','B','C','D','E' };
cout << "Print vector using an iterator: ";
vector<char>::iterator iter = container.begin();
while (iter != container.end())
{
cout << *iter << " ";
++iter;
}
cout << endl; // OUTPUT: A B C D E
Während ich versuche, in der Main.cpp Datei von meiner Aufgabe zu tun:
#include "AnyList.h"
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
AnyList list1, list2;
list1.insertFront(10);
list1.insertFront(11);
list1.insertFront(12);
list1.insertFront(13);
list1.insertFront(14);
list<int>::const_iterator iter = list1.begin();
AnyList.h
#ifndef ANYLIST_H
#define ANYLIST_H
#include<iostream>
#include <string>
#include <list>
#include <vector>
#include <iterator>
class AnyList
{
public:
AnyList();
int getNumOfElem() const;
void insertFront(int data);
void forwardPrint();
private:
list<int> *ptr;
};
#endif
AnyList.cpp
#include "AnyList.h"
#include <vector>
#include <iterator>
AnyList::AnyList()
{
}
int AnyList::getNumOfElem() const
{
return static_cast<int>(ptr->size());
}
void AnyList::insertFront(int data)
{
ptr->push_front(data);
}
void AnyList::forwardPrint()
{
list<int>::const_iterator i;
for (i = ptr->begin(); i != ptr->end(); ++i)
{
cout << *i << " ";
cout << endl;
}
}
In der Hauptdatei für die Zeile:
Liste :: const_iterator iter = list1.begin();
Ich bekomme eine Fehlermeldung, dass "begin" kein Mitglied von AnyList ist. Ich habe nachgeschaut, was das Problem sein könnte und es scheint, dass es dadurch verursacht wird, dass list1 kein Container ist? Von was es aussieht, sollte es ein Container für eine Liste sein, die von insertFront erstellt wird, aber es erkennt es nicht.
Gibt es einen Fehler bei der Implementierung der Liste? Oder ist insertFront nicht korrekt? Eigentlich ist der Grund, warum ich versucht habe, das Programm mit dieser Zeile auszuführen, darin zu sehen, ob insertFront richtig funktioniert, aber im Moment habe ich keine Ahnung, wo der Fehler liegt. Die meisten Beispiele, die ich gesehen habe, sind in einer Datei deklariert, ohne sie in einer Klasse implementieren zu müssen, daher ist diese Zuweisung zu diesem Zeitpunkt sehr verwirrend.
Auch einige mögliche Missverständnisse zu klären: - die AnyList-Klasse, die private Member-Variable und die Funktion getNumOfElem wurden bereits in der Datei enthalten und getNumOfElem wird als ein tatsächliches Implementierungsbeispiel bereitgestellt.
Edit: Auch brauche ich etwas Hilfe, wie man die Variable "ptr" hier richtig initialisiert, denn angeblich könnte das auch das Problem sein, das das Los davon verhindert zu arbeiten.
Das Problem ist, dass 'AnyList' wörtlich keine 'Begin'-Methode bietet. Ich meine, Sie haben die Deklaration genau dort: Es unterstützt 'getNumOfElem',' insertFront', 'forwardPrint'. Das ist es. – melpomene
Vielleicht versuchen, diese Aufgabe selbst zu erledigen? Du scheinst versucht zu haben, es für dich zu schreiben, einen dummen Fehler zu einer Zeit. – juanchopanza
Ich versuche das zu tun und das ist der Anfang davon. Ich meine, wenn ich wüsste, wie man die Probleme löst, die auftauchen, wären diese Fragen nicht notwendig. – BaloneyOs