2012-04-14 2 views
0

Wahrscheinlich einer ultra-dummen Frage, aber es ist zu spät, ich bin müde und Abendessen fast fertig ....Vektor in C++ nicht auf ein Verfahren reagiert aber gut mit anderen

Hier ist eine Methode, die ich habe, dass ein dauert vector in und ordnet die darin enthaltenen Werte einem anderen Vektor zu, der zuvor als ein ivar definiert wurde. Das Problem ist, es einen Fehler auf dem letzten Methodenaufruf führt sagen: Kein Mitglied Funktion für Aufruf von ‚Insert‘ passend

Hier ist der Code, Flamme auf:

void Symbol::setEncodedData(vector<int>* ec) 
{ 
Symbol::encodedSymbol.clear(); 
Symbol::encodedSymbol.resize(ec->size()); 
Symbol::encodedSymbol.insert(0, ec->begin(), ec->end()); 
} 
+1

Was ist die genaue Fehlermeldung? –

+0

Hallo, es ist die Compiler-Nachricht beim Aufbau sagt es: Keine passende Mitgliedsfunktion für den Aufruf 'einfügen' – Cocoadelica

Antwort

1
void Symbol::setEncodedData(vector<int>* ec) 
{ 
    Symbol::encodedSymbol = *ec; 
} 

Aber warum verwenden Sie ein Zeigerargument?

void Symbol::setEncodedData(vector<int> const& ec) 
{ 
    Symbol::encodedSymbol = ec; 
} 
+0

Es ist eine Weile her, seit ich viel C++ gemacht habe, benutze normalerweise Obj-C. Ich denke, dass mein Gedanke einen Zeiger passierte, war weniger Overhead als nach Wert. THATS was der & in der Parameter richtig ist? nach Wert? Ich will nur verstehen, was ich falsch gemacht habe und was dein Code richtig macht. – Cocoadelica

2

Sie haben Ihre Parameter falsch, 0 ist kein gültiger Iterator. Die möglichen Kandidaten sind:

iterator insert (iterator position, const T& x); 
    void insert (iterator position, size_type n, const T& x); 
template <class InputIterator> 
    void insert (iterator position, InputIterator first, InputIterator last); 

Warum nicht einfach operator =, um den Inhalt zu kopieren?

+0

re: operator = das war mein erster Gedanke, aber es sagt mir: keine lebensfähige Überlastung '=' – Cocoadelica

+0

im letzten Beispiel Syntax-Linien, wie würden Sie 'Iterator-Position' verwenden, um es auf das erste Element in den Vektoren zugrunde liegenden Array setzen – Cocoadelica

+0

@MightyLeader Ich bin mir nicht sicher, ich verstehe, was du meinst. Was versuchst du zu erreichen? Was ist "codiertes Symbol"? –

Verwandte Themen