C++ vector::push_back mit Standard-copy-Konstruktor

Habe ich eine Klasse (Uniform), die über einen Konstruktor mit 2 Parametern, und eine Standard-copy-Konstruktor (es enthält nur int, schwimmt, ein std::vector und std::map). Ich erstellte eine

std::vector<Uniform> uniforms

will ich füllen mit den

uniforms.push_back()

Linie. Ich benutze diesen code zu tun (die 2. Zeile ist nur hier zum testen des copy-Konstruktor, wie es derzeit nicht)

Uniform uni(uniform_name,type);
Uniform uni2=uni;
uniforms.push_back(uni2);

Den default-Konstruktor funktioniert gut, die "uni2=uni" kompiliert ohne Probleme (also der default-copy-Konstruktor ist auch OK), aber die push_back gibt (mit g++ als compiler):

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/ext/new_allocator.h:108:9: erreur: keine passende Funktion für Aufruf von " Uniform::Uniform(const Uniform&)'

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../include/c++/4.6.0/ext/new_allocator.h:108:9: Anmerkung: Kandidaten sind:

./inc/uniform.h:16:5: Anmerkung: Uniform::Uniform(std::string, Uniform_Type)

./inc/uniform.h:16:5: Anmerkung: Kandidat erwartet 2 Argumente 1 zur Verfügung gestellt

./inc/uniform.h:14:7: Hinweis: - Uniform::Uniform(Einheitliche&)

./inc/uniform.h:14:7: Anmerkung: keine bekannte Umwandlung für argument 1 von 'const Uniform' zu 'Uniform&'

Dank 🙂

  • Erstens, wo ist die definition von Uniform? Zweitens, stoppen Sie missbrauchen den Begriff "Standard". "Default" hat eine sehr spezifische Bedeutung in C++. "Default-Konstruktor" und "Kopie-Konstruktor" sind zwei völlig verschiedene Dinge in C++. In Ihrem Fall default-Konstruktor ist nicht auf allen beteiligten.
  • Sie sollten auch Blick auf diese Frage, denn Sie haben genau das gleiche problem: stackoverflow.com/questions/6302899/...
  • Als AndreyT gesagt, poste bitte code, der (im Idealfall, der kompiliert werden kann, produzieren die Symptome beschrieben) anstelle von Beschreibung der code.
InformationsquelleAutor Tuxer | 2011-06-10
Schreibe einen Kommentar