gpt4 book ai didi

c++ - NTL 库 ref_GF2 运行时错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:03 25 4
gpt4 key购买 nike

我正在使用 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) 行。

我一直试图了解代码中出了什么问题,但无济于事。任何帮助表示赞赏。

最佳答案

来自documentation :

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

关于c++ - NTL 库 ref_GF2 运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35674969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com