Georg schrieb:
> ich steht grad aufm Schlauch.
Aber mächtig!
> Ich habe da eine Variable:
> typedef RigidTransform<float,2> Pose2
Pose2 ist der Name eines Typs. Nicht der Name einer Variable.
Darüber hinaus ist RigidTransform<float,2> eine C++ Klasse (genauer
gesagt: eine Instanz des Klassentemplates RigidTransform<T, D>)
> printf("Pose2: %??", Pose2)
>
> Dieses Pose2 will ich mit printf in der Console ausgeben.
> Das sind halt 2 floats. Ich weiß nicht wie das geht.
Wie bereits gesagt, ist Pose2 nicht der Name der Variable, sondern der
Typ. Außerdem kann printf() nichts mit C++ Klassen anfangen. Es kennt
nur die klassischen C Datentypen.
Wenn ein Pose2 Objekt intern aus 2 floats besteht, dann mußt du die
einzeln herausoperieren und ebenso einzeln an printf() verfüttern.
Wie das geht, sagt dir die Doku zur RigidTransform<T, D> Klasse.
Allerdings hast du auch hier nicht Recht. Es sind nämlich drei Werte.
Verfügbar über die Zugriffsfunktionen x(), y() und phi().
aus http://www.mira-project.org/MIRA-doc/RigidTransform_8h_source.html
1 | 00294 template <typename T>
|
2 | 00295 class RigidTransform<T,2> : public RigidTransformBase<T, 2,
|
3 | 00296 Eigen::Rotation2D<T>, RigidTransform<T,2> >
|
4 | 00297 {
|
5 | ...
|
6 | 00347 public:
|
7 | 00348
|
8 | 00350 T& x() { return this->t.x(); }
|
9 | 00352 T x() const { return this->t.x(); }
|
10 | 00353
|
11 | 00355 T& y() { return this->t.y(); }
|
12 | 00357 T y() const { return this->t.y(); }
|
13 | 00358
|
14 | 00360 T& phi() { return this->r.angle(); }
|
15 | 00362 T phi() const { return this->r.angle(); }
|
Den Rest lernst du jetzt aber selber.
XL