默认初始化后如何更改mpz_class的精度?

时间:2013-04-14 21:30:29

标签: c++ gmp

我需要将来自MPIR库的mpf_class封装到我的班级A中:

class A
{           
    mpf_class a;    // default constructor - default precision
public:
    A(){                
        a = mpf_class(0,my_precision); // initialize a with zero, but it remains with default precision 
        mpf_class b = mpf_class(0,my_precision); // initialize local b with zero with my_precision
    }
};

但在构造函数中,我无法使用a初始化my_precision,因为operator=不会更改目标的精度。

我创建的唯一方法是在创建my_precision对象之前将默认精度更改为A,例如

mpf_set_default_prec(my_precision);
A my_class;

哪个有效,但这是一个非常糟糕的解决方案。那么,如何创建具有所需精度的字段a

1 个答案:

答案 0 :(得分:0)

只需使用成员初始化列表初始化a

A() : a(0, my_precision)
{ }

这避免了a的默认构造。