bigint c++
//Bigint.hpp class
#ifndef BIGINT_HPP
#define BIGINT_HPP
#define BASE 10
#include <iostream>
#include <list>
#include"Command.hpp"
class Bigint {
public:
Bigint() = default; // Construct expect no arg
Bigint(const Bigint&) = default; // Copy constructor
Bigint(Bigint&&) = default; // Move constructor
Bigint& operator=(const Bigint&) = default; // Copy assignment
Bigint& operator=(Bigint&&) = default; // Move assignment
~Bigint(); // Destructort
Bigint(std::list<unsigned char>B);
// Accessors methods ########################################################################
bool is_zero()const;
bool is_negative() const;
// Friends ####################################################################################
friend Bigint operator+(const Bigint& a, const Bigint& b);
friend Bigint operator-(const Bigint& a, const Bigint& b);
friend Bigint operator*(const Bigint& a, const Bigint& b);
friend std::ostream& operator<<(std::ostream& out, const Bigint& i);
friend std::istream& operator>>(std::istream& in, Bigint& i);
friend Bigint minus_operator_cases(const Bigint& a, const Bigint& b);
private:
//! Determine whether the integer is negative.
bool m_is_negative = false;
//! A linked list of digits.
std::list<unsigned char> m_digits;
};
Bigint operator+(const Bigint& a, const Bigint& b);
Bigint operator-(const Bigint& a, const Bigint& b);
Bigint operator*(const Bigint& a, const Bigint& b);
std::ostream& operator<<(std::ostream& out, const Bigint& i);
std::istream& operator>>(std::istream& in, Bigint& i);
#endif