最近开始研究C++中的类和运算符重载,为了练习,写了下面的Bignum类。链接: http: //pastebin.com/cQNwRChx。它不是最终版本,例如没有异常处理,也许它不是那么有效,所以我想澄清一些问题:
- 此代码在 MSVS 2010 中成功编译,但 GNU C++ 4.4.1 表示,在第 465 行的此范围内未声明“fft” 。
- 当结果很大时,我使用快速傅里叶变换来乘以数字。由于标准复数非常慢,我编写了自己的实现。在我看来,这些复数应该隐藏起来,因为它就像是 Lint 实现的一部分。所以我将它声明为 Lint 的私有嵌套类,并将 fft 声明为 Lint 的朋友。为什么它在 GNU 中不起作用?
- MSVS 的调试器显示,常量 ONE 不是静态常量。它在下面定义,在 Lint 的定义之后。
- 我想在表达式中使用带有 int、unsigned int 等的类,并且当前版本工作正常,但我也想有机会写这样的东西:
if (a) ...
,其中 a 是 Lint。但是,如果我将隐式转换定义为 bool 和 writea+b
,其中 a 是 int 而 b 是 Lint,就会有歧义。我怎么解决这个问题?
UPD。有一个简单的伪代码,没有多余的函数和定义: http: //pastebin.com/rauKQjtH。