首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NTL库ref_GF2运行时错误

NTL库ref_GF2运行时错误
EN

Stack Overflow用户
提问于 2016-02-27 20:19:02
回答 1查看 94关注 0票数 1

我正在使用NTL C++库。尝试执行以下代码时:

代码语言:javascript
复制
NTL::ref_GF2 *zero = new NTL::ref_GF2();
NTL::ref_GF2 *one = new NTL::ref_GF2();
set(*one);

我收到了一个EXC_BAD_INSTRUCTION错误:

代码语言:javascript
复制
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;
}

这个问题似乎源于一组(*一)代码。

我一直在试图了解代码中的错误,但没有结果。任何帮助都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-28 20:41:29

来自文档

GF2的头文件还声明了类ref_GF2,该类用于表示对GF2的非const引用,. 有从ref_GF2const GF2和从GF2&ref_GF2的隐式转换。

您得到了错误,因为您正在定义一个没有目标的引用。在调用set(*one)时,*one不指向GF2,因此会引发错误。

如果在调用GF2之前指向set(*one),则工作正常。

代码语言:javascript
复制
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的引用。我的示例代码显示0和1都指向x。也许您想使用GF2而不是ref_GF2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35674969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档