Класс для целых произвольной длины во внутреннем двоичном представлении в прямом коде
задача сделать класс для целых произвольной длины во внутреннем двоичном представлении в прямом коде. Есть код:
#include <iostream>
#include <string>
using namespace std;
class Bytes
{
public:
Bytes(int digit) {
DecToBin(digit);
}
void DecToBin(int digit) // Перевод из десятичной системы в двоичную
{
if (digit >= 0) sign_ = 0;
else sign_ = -1;
digit = abs(digit);
int temp = 1, n_ = 0;
while (digit > temp)
{
temp = temp * 2;
n_++;
}
byte_ = new char[n_];
for (int i = n_ - 1; i >= 0; --i)
{
byte_[i] = digit % 2;
digit = digit / 2;
}
}
void show() {
for (int i = n_ - 1; i >= 0; --i) cout << byte_[i];
cout << endl;
}
private:
char* byte_; // биты
int n_; // количество разрядов в двоичной записи
char sign_; // знак числа
};
int main()
{
Bytes b0(5);
b0.show();
return 0;
}
Проблема: я инициализирую объект b0 числом 5, в конструкторе оно переводится в двоичное представление. После этого я хочу вывести двоичную запись на экран, но ничего не выводится. Посмотрел с помощью точек останова, при переводе числа в двоичное данные записываются в какие-то локальные переменные, а не в переменные класса. То есть имеются две переменные n_, у локальной значение 3, а у переменной класса мусор. И метод show берёт значение n_ класса, вследствие чего программа работает неправильно. Как это можно исправить, чтобы значения записывались в переменные класса?