C++ 任意精度封装

C++ 任意精度封装,c++,precision,bigint,arbitrary-precision,C++,Precision,Bigint,Arbitrary Precision,我在使用任意精度的软件包时遇到问题 我包括了“precisioncore.cpp”,声明了一个int_精度,试图编译,它告诉我stdafx.h丢失了 我已经读到,我可以简单地在precisioncore.cpp中省略这个include,我就是这么做的。在那之后,它抱怨memcpy没有在这个范围内声明,所以我加入了 我无法纠正的下一个错误: \precisioncore.cpp | 4222 |错误:重载“int_precision(float_precision&)”的调用不明确| 这是第422

我在使用任意精度的软件包时遇到问题

我包括了“precisioncore.cpp”,声明了一个int_精度,试图编译,它告诉我stdafx.h丢失了

我已经读到,我可以简单地在precisioncore.cpp中省略这个include,我就是这么做的。在那之后,它抱怨memcpy没有在这个范围内声明,所以我加入了

我无法纠正的下一个错误:

\precisioncore.cpp | 4222 |错误:重载“int_precision(float_precision&)”的调用不明确|

这是第4222行:r2=(整数精度)rf; r2为整数精度,rf为浮点精度。我知道float是显式转换成int的,但是查看包中附带的引用应该不会有问题,至少在语法方面不会有问题

这里有人知道这个包裹吗?有没有遇到过同样的问题


编辑:看起来这个包在VisualStudio中工作得很好。我想不出如何让它在C:B中工作,不过…

好的,所以。。。我在尝试将该库连接到GCC下的代码块时遇到了同样的问题

在我看来,*int\u precision(float\u precision&)*构造函数在*int\u precision*类中的任何地方都没有声明,这就是您得到该错误的原因。所以我不知道它是如何在VisualStudio下工作的

无论如何,我的解决方案是自己添加构造函数:

在其他构造函数声明旁边的*int_precision*类内的iprecision.h文件中,添加:

int_precision( const float_precision& );
然后在precisioncore.cpp文件的某处添加:

int_precision::int_precision( const float_precision& s )
{//note that behavior is similar to int(double) cast
 //int(9.99) yields 9; and int(-0.9) yields 0;
  if(s.exponent()<0)
      mNumber = ito_precision_string( int(0), true );
      //code taken from int_precision(int) constructor
  else
  {
      mNumber=s.get_mantissa();
      if(mNumber[0]=='-'||mNumber[0]=='+')
          mNumber.resize(s.exponent()+2);// +1.23456E2 = 123
      else
          mNumber.resize(s.exponent()+1);// 1.2345E2 = 123
  }
}
int_precision::int_precision(常量浮点精度&s)
{//注意,行为类似于int(double)cast
//int(9.99)产生9;int(-0.9)产生0;

如果(s.exponent()关闭此特定文件的“预编译头”,我将如何处理代码块?