Vektor-Fehler , kann nicht push_back zu arbeiten
Dies ist nur ein Ausschnitt aus der unkommentierte code. Die Verpackung vector hält, was zu einem Fehler bei der push_back()
, und ich bin mir nicht ganz sicher, warum:
EDIT: Es wurde aktualisiert, um zu sagen,
vector<BinTreeNode<HuffmanToken<Pixel>* > > packing = new vector<BinTreeNode<HuffmanToken<Pixel> > >();
allerdings gibt es immer noch die Zuweisung Fehler auch mit den eingestellten Vorlagen.
keine passende Funktion für Aufruf von std::vector , std::allocator > > :: push_back(BinTreeNode > >&
BinTree<HuffmanToken<Pixel> >* Huffman::buildTree(const vector<HuffmanToken<Pixel>>& tokens) {
BinTreeNode<HuffmanToken<Pixel> >* g1 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g2 = new BinTreeNode<HuffmanToken<Pixel> >();
BinTreeNode<HuffmanToken<Pixel> >* g3 = new BinTreeNode<HuffmanToken<Pixel> >();
vector<HuffmanToken<Pixel> > packing ;
vector<HuffmanToken<Pixel> >::const_iterator it;
it = tokens.begin();
for(int i = 0; i < tokens.size(); i++) {
g1 -> setValue(tokens.at(i));
packing.push_back(g1);
}
InformationsquelleAutor user1058359 | 2011-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vektor erwartet
HuffmanToken<Pixel>
Objekte, aber Sie versuchen zupush_back
eineBinTreeNode<HuffmanToken<Pixel> >*
Zeiger. Nur stellen Sie sicher, dass der Vektor hat die richtige Vorlage geben.Bearbeiten
Unter Berücksichtigung Ihrer update, habe ich beschlossen, werfen sich alle code, wie es sein sollte:
Der einzige Unterschied zu den original-code ist, dass
vector<HuffmanToken<Pixel> >
ersetzt mitvector<BinTreeNode<HuffmanToken<Pixel> >*>
(das gilt auch für dievector
selbst, als auch die der iterator).Der Vektor sollte nicht nötig sein, einen Zeiger. Es sollten nur speichern Zeiger. Wenn ich verstehe dein code korrekt, wird der Vektor sollte erklärt werden, wie
vector<BinTreeNode<HuffmanToken<Pixel>* > > packing;
.InformationsquelleAutor Ken Wayne VanderLinde
Vektor ist vom Typ
HuffmanToken<Pixel>
aber Sie versuchen, push-Typ
hinein.BinTreeNode<HuffmanToken<Pixel> >*
InformationsquelleAutor Victor Parmar
Ihre Typen nicht übereinstimmen. Sie haben ein Vektor, der
HuffmanToken<Pixel>
s und Sie versuchen, drücken Sie eineBinTreeNode<HuffmanToken<Pixel> > *
auf.InformationsquelleAutor David Schwartz
Den Typ der
g1
istBinTreeNode<HuffmanToken<Pixel> >*
D. H., es ist ein Zeiger-Typ. Aberpacking
ist der Typvector<HuffmanToken<Pixel> >
. Was der Vektor besitzt Objekte, aber keine Zeiger auf Objekte.Es nicht bemerkt. Danke.
InformationsquelleAutor Mahesh
Das problem hier ist, dass Sie erstellen einen Vektor, der soll halt von Elementen des Typs
HuffmanToken<Pixel>
. Anstatt Objekte von diesem Typ in den Vektor, die Sie versuchen, zu schieben, in eineBinTreeNode<HuffmanToken<Pixel> >*
.- Und das kann nicht funktionieren.
Was Sie wollte wohl zu schieben, wurde der Rückgabewert von g1->getValue() (falls es so eine Methode überhaupt...).
InformationsquelleAutor cli_hlt