У меня есть два независимых класса, каждый из которых поддерживает буфер ограниченного размера:
class A {
private:
std::deque<uint8_t> buffer;
size_t max_size;
};
class B {
private:
static const size_t MAX_SIZE = 1024;
uint8_t buffer[MAX_SIZE];
}
Теперь у меня также есть функция C, которая не является членом A или B. Эта функция должна принимать(т.е. удалить) как можно больше байтов из начала из A и записать его в B. Ofc переполнение буфера не допускается.
Вопрос: Как я могу сделать это эффективно, гарантируя, что Aи Б инкапсулированы?Т.е. A, B и C не знают, как реализованы другие.
Вещи, которые я не хочу, по понятным причинам:
- A выставляетОткрытый метод, который возвращает неконстантный итератор в deque
- B, предоставляет открытый метод, который возвращает неконстантный указатель на массив