NTL 库 ref_GF2 运行-时间错误
NTL Library ref_GF2 Run-time Error
我正在使用 NTL C++ 库。在尝试执行以下代码时:
NTL::ref_GF2 *zero = new NTL::ref_GF2();
NTL::ref_GF2 *one = new NTL::ref_GF2();
set(*one);
我收到 EXC_BAD_INSTRUCTION 错误:
ref_GF2 operator=(long a)
{
unsigned long rval = a & 1;
unsigned long lval = *_ref_GF2__ptr;
lval = (lval & ~(1UL << _ref_GF2__pos)) | (rval << _ref_GF2__pos);
*_ref_GF2__ptr = lval;
return *this;
}
问题似乎源于 set(*one) 行代码。
我一直试图了解代码中出了什么问题,但无济于事。任何帮助表示赞赏。
The header file for GF2 also declares the class ref_GF2
, which
use used to represent non-const references to GF2
's, [...].
There are implicit conversions from ref_GF2
to const GF2
and from GF2&
to ref_GF2
.
您收到错误是因为您定义的引用没有目标。
在您调用 set(*one)
的地方,*one
没有指向 GF2
,因此会引发错误。
它工作正常,如果你在调用 set(*one)
之前指向 GF2
:
NTL::GF2 x = GF2();
NTL::set(x); // x = 1
NTL::ref_GF2 *zero = new NTL::ref_GF2(x);
NTL::ref_GF2 *one = new NTL::ref_GF2(x);
// this works now
NTL::clear(*zero);
NTL::set(*one);
cout << *zero << endl; // prints "1"
cout << *one << endl; // prints "1"
请注意 ref_GF2
表示对 GF2
的引用。我的示例代码显示零和一都指向 x
。也许您想使用 GF2
而不是 ref_GF2
.
我正在使用 NTL C++ 库。在尝试执行以下代码时:
NTL::ref_GF2 *zero = new NTL::ref_GF2();
NTL::ref_GF2 *one = new NTL::ref_GF2();
set(*one);
我收到 EXC_BAD_INSTRUCTION 错误:
ref_GF2 operator=(long a)
{
unsigned long rval = a & 1;
unsigned long lval = *_ref_GF2__ptr;
lval = (lval & ~(1UL << _ref_GF2__pos)) | (rval << _ref_GF2__pos);
*_ref_GF2__ptr = lval;
return *this;
}
问题似乎源于 set(*one) 行代码。
我一直试图了解代码中出了什么问题,但无济于事。任何帮助表示赞赏。
The header file for GF2 also declares the class
ref_GF2
, which use used to represent non-const references toGF2
's, [...].There are implicit conversions from
ref_GF2
toconst GF2
and fromGF2&
toref_GF2
.
您收到错误是因为您定义的引用没有目标。
在您调用 set(*one)
的地方,*one
没有指向 GF2
,因此会引发错误。
它工作正常,如果你在调用 set(*one)
之前指向 GF2
:
NTL::GF2 x = GF2();
NTL::set(x); // x = 1
NTL::ref_GF2 *zero = new NTL::ref_GF2(x);
NTL::ref_GF2 *one = new NTL::ref_GF2(x);
// this works now
NTL::clear(*zero);
NTL::set(*one);
cout << *zero << endl; // prints "1"
cout << *one << endl; // prints "1"
请注意 ref_GF2
表示对 GF2
的引用。我的示例代码显示零和一都指向 x
。也许您想使用 GF2
而不是 ref_GF2
.