У меня есть проект производителя/потребителей в моем приложении, которые реализуют функции Produce/Consume для пользовательских типов. Но это не работает очень естественно со стандартной библиотекой и особенно с алгоритмами.C++ и Enumerable
В C# есть Переменные и Наблюдаемые понятия, которые могут быть использованы для простого использования таких вещей и получения большой свободной функциональности.
В C++ существуют концепции ios, istream, ostream, input_iterator, output_iterator, которые, как я думал, могут быть полезны. Но мне кажется, что все они предназначены для примитивных типов символов, например. char, int и т. д., но не для пользовательских типов.
Конечно, я мог бы использовать настоящие функции, такие как Produce/Consumer и std :: mem_fn для алгоритмов. Но я надеялся, что есть лучший способ.
Я смотрю несколько советов о том, как идти о проектировании i/o подобных решений по типам пользователей на C++.
E.g. от C#
class FrameProducer : IEnumerable<Frame> // pull frames
{...}
// Some engine between
class FrameConsumer : IObserver<Frame> // push frames
{...}
Я надеялся на что-то подобное на C++, например. которые, я считаю, не возможны.
class FrameProducer : istream<Frame> // pull frames
{...}
// Some engine between
class FrameConsumer : ostream<Frame> // push frames
{...}
Возможно, я думаю об этом трудно и должен просто идти КИС.
Мысли?
Почему вы говорите о C#? Это C++, забудьте, что вы знаете C# и начинаете программирование на C++. Говоря «Я бы сделал это так на языке X, как я могу перевести его на язык Y» всегда будет терпеть неудачу, вы должны выучить язык Y с нуля, чтобы вы знали, как все делается на языке Y. [Хорошая книга помогает] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). О, и я не понимаю. Всякий раз, когда вы вводите язык X в проблему языка Y, многие люди, которые знают язык Y, нуждаются в разъяснении этой функции языка X. – GManNickG
Можете ли вы лучше объяснить, что вы подразумеваете под «Произвести/Потреблять функции на пользовательских типах»? – Dacav
Не имеет значения, на каком языке я говорю, это не так. Я просто выбрал C#, потому что это было удобно, поскольку у него была концепция LINQ, которая похожа на C++ и ее итераторы и алгоритмы. Мой вопрос в том, почему концепция C++ ios не позволяет использовать типы пользователей и какие существуют альтернативы. – ronag