Как мне объявить функцию интерфейса, которая получает диапазон INT?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как мне объявить функцию интерфейса, которая получает диапазон INT?

Сообщение Anonymous »

Я хочу перенести std :: ranges :: view функции, которая является реализацией интерфейса, без создания нового вектора и распределения большего количества памяти.

Код: Выделить всё

virtual void doSomethingWithInts(std::ranges::input_range auto intsView) = 0;
< /code>
Вот более подробный пример: < /p>
#include 
#include 
class IGetRange{
virtual void doSomethingWithInts(std::ranges::input_range auto intsView) = 0;
};

class PrintRange : public IGetRange{
void doSomethingWithInts(std::ranges::input_range auto intsView) {
std::ranges::copy(intsView, std::cout);
}
};

class SendOverNetworkRange : public IGetRange{
NetworkAdapter networkAdapter;
void doSomethingWithInts(std::ranges::input_range auto intsView) {
//do some extra work with additional input
std::ranges::copy(intsView, networkAdapter);
}
};

class Caller {
std::vectordoSomethingWithInts(passView);

}
};
Но это должно быть полиморфным, следовательно, это виртуально , и не принимает шаблоны.
Я не хочу Чтобы пройти новый вектор , потому что он распределяет больше места. И Span не является вариантом, потому что мне придется распределить его.
Я хочу иметь возможность передать только диапазон с данным типом.

Подробнее здесь: https://stackoverflow.com/questions/794 ... ge-of-ints
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»