C/C++

Синтаксическая ошибка: константа строки в с++

Класс инкапсулирует двоичное число, хранимое в виде строки S максимальной длины N. Определить операции циклического сдвига двоичного числа вправо или влево, а также инверсии этого числа (<<, >>, ~).

я не знаю как мне инкапсулировать строку s с длиной n
я пробовал
#pragma once
#include
#include
#define N 100

namespace Math
{
class Binary_number
{
private:

std::string S(N,"");

public:

Binary_number();

~Binary_number();

};
}

но мне выдает Binary_number.h(12,18): error C2059: синтаксическая ошибка: константа

как мне реализовать строку s максимальной длины n?
Ла
Лазарь
130
#include <string>
#include <iostream>
using namespace std;
class Binary {
public:
explicit Binary(const size_t n) : n(n), bin(string(n, '0')) {}
Binary operator<<(const unsigned n) {
Binary tmp = *this;
for (auto i = 0U; i < n; ++i) {
auto front = tmp.bin.front();
tmp.bin += front;
tmp.bin.erase(0U, 1U);
}
return tmp;
}
Binary operator>>(const unsigned n) {
Binary tmp = *this;
for (auto i = 0U; i < n; ++i) {
auto back = tmp.bin.back();
tmp.bin = back + tmp.bin;
tmp.bin.pop_back();
}
return tmp;
}
Binary operator~() {
Binary tmp = *this;
for (auto& x : tmp.bin) x & 1 ? --x : ++x;
return tmp;
}
private:
size_t n;
string bin;
friend ostream& operator<<(ostream& out, const Binary& num) {
return out << num.bin;
}
friend istream& operator>>(istream& inp, Binary& num) {
string tmp;
inp >> tmp;
if (num.n == tmp.length()) {
num.bin = tmp;
} else if (num.n > tmp.length()) {
auto pos = num.n - tmp.length();
num.bin.replace(pos, tmp.length(), tmp);
} else {
num.bin = string(tmp.begin(), tmp.begin() + num.n);
}
return inp;
}
};
int main() {
system("chcp 1251 > nul");
Binary number(32);
cout << "Введите бинарное число: ";
cin >> number;
system("cls");
puts("Бинарное число:");
cout << number << '\n';
puts("Циклический сдвиг влево на 4 разряда:");
cout << (number << 4) << '\n';
puts("Циклический сдвиг вправо на 4 разряда:");
cout << (number >> 4) << '\n';
puts("Инверсия числа:");
cout << ~number << '\n';
system("pause > nul");
}
ВП
Вячеслав Побегайло
73 039
Лучший ответ
char[N]
Данил Ильин
Данил Ильин
25 516