Wie soll ich eine Schnittstellenfunktion deklarieren, die eine Reihe von INTs erhält?
Posted: 15 Feb 2025, 13:40
Ich möchte eine std :: ranges :: anzeigen zu einer Funktion, die eine Implementierung einer Schnittstelle darstellt, ohne einen neuen Vektor zu erstellen und mehr Speicher zuzuweisen. < /p>
Hier ist ein detaillierteres Beispiel:
#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);
}
};
< /code>
, aber es sollte polymorph sein, daher ist es virtuell und akzeptiert keine Vorlagen < /p>
Ich möchte keinen neuen Vektor übergeben, weil es wird Mehr Platz zuweisen,
entweder eine Spannweite ist keine Option, da ich ihn zuweisen muss.>
Code: Select all
virtual void doSomethingWithInts(std::ranges::input_range auto intsView) = 0;
Hier ist ein detaillierteres Beispiel:
#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);
}
};
< /code>
, aber es sollte polymorph sein, daher ist es virtuell und akzeptiert keine Vorlagen < /p>
Ich möchte keinen neuen Vektor übergeben, weil es wird Mehr Platz zuweisen,
entweder eine Spannweite ist keine Option, da ich ihn zuweisen muss.>