Betrachten Sie diesen Code:C++ Reihe von verschiedenen Typen Allgemeiner
template<typename T>
void doSomething(std::vector<T> arr) {
for (auto i = 0; i < arr.size(); ++i)
std::cout << arr[i] << std::endl;
}
int main()
{
doSomething(std::vector<int> { 1, 5, 7 });
}
In diesem Beispiel wird eine Schablone verwendet wird, ziemlich regelmäßig. Ein Array von drei ganzen Zahlen wird in eine Funktion übergeben, die einen Parameter eines Arrays der allgemeinen Typen vom Typ T
aufweist. Es wird dann angegeben, dass sie vom Typ int
hier sind: std::vector<int> { 1, 5, 7 }
.
Was ich tun möchte, ist die std::vector
zu initialisieren, um drei verschiedene Arten zu enthalten. Etwas wie folgt aus:
doSomething(std::vector<T> { 1, "Hi", 2.7f });
Hier gibt es keinen bestimmten Typ, und die std::vector
nicht nur ganze Zahlen enthalten. Gibt es eine Möglichkeit, so etwas zu tun? Vielen Dank!
(Ich denke) Sie könnten es mit vielen Klassen vortäuschen, aber das wäre schrecklich Code – Amit