std vector

Sathana

Grünschnabel
Hi!
Ich hab ein Problem mit dem std-Vektor. Ich schreibe in den Vector sensor_0R Werte vom Typ Adam::Rotation3d rein.
Sollte es nicht egal sein, von welchem Typ der Vektor ist?
Jedenfalls wenn ich eine Testausgabe machen will, dann kommt die Fehlermeldung:
error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class Adam::Rotation3d' (or there is no acceptable conversion)

std::vector<Adam::Rotation3d> sensor_0R ;

Adam::Rotation3d rotation_sensor_0(va, ve, vr); //Fehler muss schon hier liegen
sensor_0R.push_back(rotation_sensor_0);
std::cout << "Testausgabe: " << sensor_0R.front() << endl; //**zum Test


Das hier ist der Konstruktor von Adam::Rotation3d:
Rotation3d ( const double & roll, const double & pitch, const double & yaw ) { set( roll, pitch, yaw ); };

Jemand eine Ahnung wo der Fehler ist
 
Zuletzt bearbeitet:
Hi.

Zuerst einmal: Kannst du bitte Code den du postest mit den entsprechenden Code Tags versehen, so ist er deutlich besser lesbar. (C Code in [c]...[/c], C++ Code in [code=cpp]...[/code] Tags usw.) (Tip: Du kannst deinen Text auch noch überarbeiten!)
std::cout << "Testausgabe: " << sensor_0R.front() << endl; //**zum Test
Nein, der Fehler ist hier. (wie der Compiler sicherlich auch angezeigt hat). Du versucht dort ein Objekt des Typs "Adam::Rotation3d" auf der Standardausgabe auszugeben. Dein Code ist also äquivalent zu:
C++:
cout << "Testausgabe: " << rotation_sensor_0 << endl;

Das geht nicht, weil du den ostream& operator<< (ostream& s, const Adam::Rotation3d& x) nicht definiert hast. (was der Compiler auch bereits erwähnte)

Du mußt diesen Operator definieren damit du Objekte vom Typ "Adam::Rotation3d" auf Ausgabestreams ausgeben kannst. Siehe http://www.physik.uni-regensburg.de/studium/edverg/c++kurs/skript/node36.html

Gruß
 
Zuletzt bearbeitet:
Code:
ostream &operator <<(ostream &os, const Adam::Rotation3d& rotation_sensor_0);
std::cout << rotation_sensor_0 << endl;

So müsste es doch dann funktionnieren oder hab ich das falsch verstanden
 
Hallo,

hast du den

Code:
ostream &operator <<(ostream &os, const Adam::Rotation3d& rotation_sensor_0);
denn auch implementiert?

Quasi:
Code:
ostream &operator <<(ostream &os, const Adam::Rotation3d& rotation_sensor_0)
{
  ... // hier muss noch was hin
}

MfG Turri
 
Zurück