将 _DecimalT 类模板对象传递给函数
当被调用函数不包含原型时,没有对具有 _DecimalT 类模板的自变量进行缺省自变量提升。 包含 _DecimalT 类模板自变量的任何函数定义都必须具有原型; 否则,编译器将发出错误。
下图提供了一个示例。
#include <bcd.h>
#include <iostream.h>
_DecimalT<3,1> d1 = __D("33.3");
_DecimalT<10,5> d2 = __D("55555.55555");
_DecimalT<28,0> d3 = __D("8888888888888888888888888888");
void func1( _DecimalT<3,1>, _DecimalT<10,5>,
_DecimalT<10,5>, _DecimalT<28,0>);
int main(void)
{
func1(d1, d2, __D("999.99"), d3);
}
// func1 is prototyped
void func1(_DecimalT<3,1> x1, _DecimalT<10,5> x2,
_DecimalT<10,5> x3, _DecimalT<28,0> x4) {
// no runtime error when referencing x1, x2, x3 or x4
cout <<"x1 = " <<x1 <<endl;
cout <<"x2 = " <<x2 <<endl;
cout <<"x3 = " <<x3 <<endl;
cout <<"x4 = " <<x4 <<endl;
}输出为:
x1 = 33.3
x2 = 55555.55555
x3 = 999.99000
x4 = 88888888888888888888888888888