Недавно я начал изучать классы и перегрузку операторов в C ++ и написал следующий класс Bignum для практического применения. Ссылка на сайт: http://pastebin.com/cQNwRChx. Это не окончательная версия, например, нет обработки исключений и, возможно, она не так эффективна, поэтому я хочу уточнить некоторые вопросы:
- Этот код успешно скомпилирован в MSVS 2010, но в GNU C ++ 4.4.1 сказано, что ‘fft’ не был объявлен в этой области в строке 465.
- Я использую быстрое преобразование Фурье для умножения чисел, когда результат огромен. Из-за очень медленных стандартных комплексных чисел я написал свою собственную реализацию. На мой взгляд, эти комплексные числа должны быть скрыты, потому что это как часть реализации Lint. Поэтому я объявляю его частным вложенным классом Lint и объявляю fft другом Lint. Почему это не работает в GNU?
- Отладчик MSVS показывает, что константа ONE не является статической константой. Это определено ниже, после определения Линт.
- Я хотел бы использовать в выражениях класс с int, unsigned int и т. Д., И текущая версия работает нормально, но я также хочу иметь возможность написать что-то вроде этого:
if (a) ...
где Линт. Но если я определю неявное преобразование в bool и напишу a+b
где a — это int, а b — это Lint, возникает неоднозначность. Как я могу решить эту проблему?
UPD. Существует простой псевдокод без лишних функций и определений: http://pastebin.com/rauKQjtH.
0
Решение
Задача ещё не решена.
Другие решения
Других решений пока нет …