Бигнум Арифметика. Класс C ++

Недавно я начал изучать классы и перегрузку операторов в C ++ и написал следующий класс Bignum для практического применения. Ссылка на сайт: http://pastebin.com/cQNwRChx. Это не окончательная версия, например, нет обработки исключений и, возможно, она не так эффективна, поэтому я хочу уточнить некоторые вопросы:

  1. Этот код успешно скомпилирован в MSVS 2010, но в GNU C ++ 4.4.1 сказано, что ‘fft’ не был объявлен в этой области в строке 465.
  2. Я использую быстрое преобразование Фурье для умножения чисел, когда результат огромен. Из-за очень медленных стандартных комплексных чисел я написал свою собственную реализацию. На мой взгляд, эти комплексные числа должны быть скрыты, потому что это как часть реализации Lint. Поэтому я объявляю его частным вложенным классом Lint и объявляю fft другом Lint. Почему это не работает в GNU?
  3. Отладчик MSVS показывает, что константа ONE не является статической константой. Это определено ниже, после определения Линт.
  4. Я хотел бы использовать в выражениях класс с int, unsigned int и т. Д., И текущая версия работает нормально, но я также хочу иметь возможность написать что-то вроде этого: if (a) ...где Линт. Но если я определю неявное преобразование в bool и напишу a+bгде a — это int, а b — это Lint, возникает неоднозначность. Как я могу решить эту проблему?

UPD. Существует простой псевдокод без лишних функций и определений: http://pastebin.com/rauKQjtH.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …