2012-03-31 17 views
0

Ich verwende die C++ Einheiten-Bibliothek von Calum Grant http://calumgrant.net/units/, um Werte zu verwalten, die Längen oder Geschwindigkeiten darstellen."Unvollständiger Typ" bei der Verwendung von C++ - Einheiten Einheiten :: komponieren

Jetzt brauche ich eine Einheit, die nicht von dieser Bibliothek angegeben wird, und das ist Fuß pro Minute. Nach http://calumgrant.net/units/units.html können Sie neue Einheiten wie folgt machen:

typedef units::compose< units::units::m, units::pow<units::units::s, -1> > meters_per_second;

aber dieses Beispiel funktioniert nicht. Wenn ich

typedef units::compose< units::units::foot, units::pow<units::units::minute, -1> > 
feet_per_minute; 
feet_per_minute vertical_speed(12); 

angeben erhalte ich die folgende Compiler-Fehler (mit gcc 4.2.1 auf Mac)

error: variable 'feet_per_minute vertical_speed' has initializer but incomplete type 

und diesen Fehler, wenn sie mit Klirren Kompilieren 3

error: implicit instantiation of undefined template 'units::compose<units::scale<units::scale<units::scale<units::units::m, 100, 1>, 100, 254>, 1, 12>, units::pow<units::scale<units::units::s, 1, 60>, -1, 1> >' 

Was fehlt ?

+0

Füße? Ernst? –

Antwort

1

Nun, ich habe gerade das Problem gefunden. Es gibt "Einheiten" und es existieren "Werte" dieser Einheiten. So ist die korrekte Definition wie folgt:

namespace units { 

namespace units { 
    typedef compose< foot, pow<minute, -1> > fpm; 
} 

namespace values { 
    typedef value<double, units::fpm> fpm; 
} 

} 
0

Probieren Sie die Füße pro Sekunde. Sehen Sie, wenn das funktioniert, dann repost