将 _DecimalT 类模板对象传递给函数

当被调用函数不包含原型时,没有对具有 _DecimalT 类模板的自变量进行缺省自变量提升。 包含 _DecimalT 类模板自变量的任何函数定义都必须具有原型; 否则,编译器将发出错误。

下图提供了一个示例。

图 1。 向函数传递 _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