2012-03-31 20 views
0

我使用Calum Grant http://calumgrant.net/units/的C++单元库来管理表示长度或速度的值。使用C++单元单元的“不完整类型”:: compose

现在我需要一个未指定此库的单位,即每分钟英尺。据http://calumgrant.net/units/units.html可以使新的单位是这样的:

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

但这个例子不工作。如果我指定

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

我得到以下编译错误(在Mac上使用GCC 4.2.1)

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

,但此错误铿锵编译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> >' 

缺少什么时?

+0

脚?真的吗? – 2012-04-01 22:08:24

回答

1

嗯,我刚发现这个问题。存在“单位”,并存在这些单位的“价值”。所以正确的定义如下:

namespace units { 

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

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

} 
0

尝试英尺每秒。看看是否有用,然后转贴