Forum: Mikrocontroller und Digitale Elektronik Ausgabe einer definierten Variable


von Georg (Gast)


Lesenswert?

Hallo allerseits,

ich steht grad aufm Schlauch.

Ich habe da eine Variable:
http://www.mira-project.org/MIRA-doc/group__TransformModule.html#ga9eb50accf00ac658449edfdf6c9adb72

typedef RigidTransform<float,2> Pose2

printf("Pose2: %??", Pose2)

Dieses Pose2 will ich mit printf in der Console ausgeben.
Das sind halt 2 floats. Ich weiß nicht wie das geht.

Danke.

von ccc (Gast)


Lesenswert?


von Georg (Gast)


Lesenswert?

template <typename T, int D>
class RigidTransform
{
static_assert(D!=D,"RigidTransform is not defined for this dimension. "
                      "Only 2 and 3 dimensions are available.");
 };


Des ist ne Klasse. Bzw. ein Objekt. Das hat 2 Werte. Wie kann ich jetzt 
einen der 2 Werte abfragen.

von Mike (Gast)


Lesenswert?

Georg schrieb:
> Das sind halt 2 floats. Ich weiß nicht wie das geht.

Google kaput?

Vielleicht ist hier was für dich dabei
http://en.wikipedia.org/wiki/Printf_format_string

von Georg (Gast)


Lesenswert?

oh gott ich gebs ich seid ja blöder als ich.

von fred (Gast)


Lesenswert?

Ich denke printf ist nicht das Problem, sondern es fehlt an Verständnis 
für objektorientiertes Programmieren.
http://cplus.kompf.de/tutor.html

von mr. pink (Gast)


Lesenswert?

Georg schrieb:
> oh gott ich gebs ich seid ja blöder als ich.
                 ^^^
*auf

von Axel S. (a-za-z0-9)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.