Betreiber Probleme mit cout
Ich habe ein einfaches Paket Klasse, die überlastet ist, so kann ich die Ausgabe Paket Daten einfach mit cout << Paketname. Ich habe auch zwei Datentypen, der name ist ein string und Versandkosten mit ein Doppelbett.
protected:
string name;
string address;
double weight;
double shippingcost;
ostream &operator<<( ostream &output, const Package &package )
{
output << "Package Information ---------------";
output << "Recipient: " << package.name << endl;
output << "Shipping Cost (including any applicable fees): " << package.shippingcost;
Das problem mit der 4. Zeile (output << "Empfänger:...). Ich erhalte die Fehlermeldung "kein operator "<<" entspricht diesen Operanden". Jedoch, die Linie 5 ist in Ordnung.
Ich vermute, dies hat zu tun mit dem Datentyp einen string für den Namen des Pakets. Irgendwelche Ideen?
sind Sie mit std::string oder einige andere string-Bibliothek?
Mit string.h #include <string.h> Es ist sowohl in meinem .h und .cpp-Datei, die für diese Klasse. Auch using namespace std ist (obwohl, dass sollte klar sein, durch die anderen Linien der Arbeit).
Verwenden
Haben Sie versucht, einschließlich #include <string> statt ?
Ich denke, dass string.h ist standard. Es ist jedoch nicht das .h-version der Zeichenfolge, aber der .h-version cstring, kompatibel zu sein mit C.
Mit string.h #include <string.h> Es ist sowohl in meinem .h und .cpp-Datei, die für diese Klasse. Auch using namespace std ist (obwohl, dass sollte klar sein, durch die anderen Linien der Arbeit).
Verwenden
<string>
- <string.h>
ist nicht-standard und kann tun komisches Zeug. Gleiches gilt für <iostream>
etc.Haben Sie versucht, einschließlich #include <string> statt ?
Ich denke, dass string.h ist standard. Es ist jedoch nicht das .h-version der Zeichenfolge, aber der .h-version cstring, kompatibel zu sein mit C.
InformationsquelleAutor BSchlinker | 2010-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie werden, einschließlich einer falschen string-header.
<string.h>
und<string>
sind zwei völlig unterschiedliche standard-Header.Dass für die Funktionen von C-style null-terminierte char arrays (wie
strcpy
,strcmp
etc). cstring-ReferenzDas ist für
std::string
. string ReferenzInformationsquelleAutor UncleBens
Sind Sie wahrscheinlich fehlt
#include <string>
.InformationsquelleAutor sbi
Versuchen deklarieren
operator<<
alsfriend
in Ihrer Klassendeklaration:Durch die Art und Weise, ist es sehr schlechte form zu verwenden, Variablen-Namen, die den gleichen Namen wie der Datentyp, ausgenommen anderer Fall. Dieser verheerende Auswirkungen mit such-und Analyse-tools. Auch Tippfehler können Spaß haben Nebenwirkungen auch.
InformationsquelleAutor Thomas Matthews
verwenden Sie diese, um die Ausgabe der Zeichenfolge..
Ausgabe << "Empfänger:" << Paket.name.c_str() << endl;
std::string
sind der standard-Bibliothek.Braucht man eigentlich nicht
c_str()
es sei denn, Sie möchten einechar*
, möglicherweise, um es zu übergeben, um einen C-Stil-Funktion (z.B.printf
). -1Es habe! Sorry wusste das nicht. Danke!
Aber - so etwas könnte/würde, highlight, wenn die OP nicht den
string
definition vorgesehen war.InformationsquelleAutor Jujjuru