Size: a a a

2020 August 19

M

Max in supapro.cxx
Constantine Drozdov
Ну смотри, в этом примере иерархия вроде понятная
Примитивный поток байтов на самом нижнем уровне, с методами типа дайте N байтов
Буферизатор стоит выше и проксирует такой же интерфейс, возможно с пополнением чего-то
Короче, посмотри потоки данных и не пытайся разломать их в иерархии в духе buffer -> CFile -> фактический файл (при этом buffer содержит CFile)
У меня идёт чтение из файла.
Просто для скорости читаю из файла блоками заранее.
Хотелось бы дочитывать в эти блоки при необходимости.
источник

CD

Constantine Drozdov in supapro.cxx
Max
У меня идёт чтение из файла.
Просто для скорости читаю из файла блоками заранее.
Хотелось бы дочитывать в эти блоки при необходимости.
Так непонятно, почему структура не агрегация "FileBufferedReader : FileJustReader"
источник

M

Max in supapro.cxx
То есть сейчас он читает сколько нужно уже из своего буфера. А потом дочитывает в буфер новую пачку данных. И отдаёт запрашиваемые данные, вычитывая их из этого буфера каждый раз
источник

CD

Constantine Drozdov in supapro.cxx
Max
То есть сейчас он читает сколько нужно уже из своего буфера. А потом дочитывает в буфер новую пачку данных. И отдаёт запрашиваемые данные, вычитывая их из этого буфера каждый раз
Утаскивается буфер только вместе с функцией дочитывания и её параметрами, короче
источник

CD

Constantine Drozdov in supapro.cxx
Иначе ты сломал потоки данных
источник

M

Max in supapro.cxx
Constantine Drozdov
Так непонятно, почему структура не агрегация "FileBufferedReader : FileJustReader"
хм.
Можно и так.
источник

CD

Constantine Drozdov in supapro.cxx
Max
хм.
Можно и так.
Ты можешь посмотреть на то, как сделано istream в std
источник

CD

Constantine Drozdov in supapro.cxx
Там обертка над полиморфным буфером как раз
источник

M

Max in supapro.cxx
Constantine Drozdov
Утаскивается буфер только вместе с функцией дочитывания и её параметрами, короче
Да я и что-то подзабыл, Как в функцию передавать метод класса (каким типом на той стороне его принимать)
источник

CD

Constantine Drozdov in supapro.cxx
Max
Да я и что-то подзабыл, Как в функцию передавать метод класса (каким типом на той стороне его принимать)
Метод-то ты передашь, а каким образом ты собираешься передать this?
источник

M

Max in supapro.cxx
хм, да. Печальственно я замутить решил
источник

CD

Constantine Drozdov in supapro.cxx
Max
хм, да. Печальственно я замутить решил
Ну опять же можно сделать неперемещаемый файл, но это прямо крякает ошибкой (неперемещаемость обычно означает потенциально бесконечное множество входящих ссылок)
источник

CD

Constantine Drozdov in supapro.cxx
Так-то лямбду в this забиндать и в std::function записать можно, только происходящее уже полная хрень
источник

CD

Constantine Drozdov in supapro.cxx
Это способ общения между сущностями на расстоянии в 10 cpp файлов, а не внутри одного)
источник

CD

Constantine Drozdov in supapro.cxx
Max
хм, да. Печальственно я замутить решил
Вообще самые большие подсказки, которые у тебя есть - ответы на два вопроса
1) кто кем владеет (он же вопрос об отношении времени жизни)
2) как идёт поток данных
источник

M

Max in supapro.cxx
да у меня был просто файл.
чтобы быстрее читать из него я добавил опережающий буфер.
Вот думал, как красиво этот буфер оформить, чтобы не в виде функций в исходном классе файла
источник

M

Max in supapro.cxx
Так-то есть мапа этих файлов. И делать мапу файловых буферов, с учётом, что с этими файлами ещё много всякого можно делать, не хотелось бы
источник

CD

Constantine Drozdov in supapro.cxx
Max
да у меня был просто файл.
чтобы быстрее читать из него я добавил опережающий буфер.
Вот думал, как красиво этот буфер оформить, чтобы не в виде функций в исходном классе файла
Ща, я тебе нарисую медскиллза в пайнте
источник

ip

illya palkin in supapro.cxx
template <class Lambda>
auto foo(Lambda l) {
   
}
auto result = foo([](int const e) {return e * e; });

А внутри foo() можно как-то узнать что принимает лямбда ? какие, какого типа и сколько параметров ?
источник

AP

Alexander Potapov in supapro.cxx
Я чёт такое уже спрашивал
Формально нет, потому что лямбда может быть шаблонной
источник