Ich arbeite an einem Messaging-System auf C++. Ich habe;Generisches Messaging
Mit diesen kann ich generische Nachrichten unterschiedlicher Länge bequem senden/empfangen mit z.
sendMessage(MessageData::MessageList{
Message<std::string>::Make("paint"),
Message<int>::Make(14),
Message<float>::Make(129.3f),
...
});
Dann bekomme ich die Werte;
sendMessage(MessageData::MessageList data) {
auto a = Message<std::string>::Get(data[0]);
auto b = Message<int>::Get(data[1]);
auto c = Message<float>::Get(data[2]);
...
}
Der Nachteil ist, dass ich alle Typen auflisten muss, die ich in der MessageData-Klasse verwenden muss. Dies ist keine große Sache, da ich die Typen begrenzen kann, die ich unterstützen möchte, aber ich bin wirklich neugierig darauf, wie man die Typenliste ohne Verwendung einer 3rd-Party-Bibliothek templatisieren kann. Oder gibt es eine völlig andere und bessere Methode, die ich mit ähnlicher sauberer Syntax und Typsicherheit verwenden kann, um Nachrichten weiterzugeben?
boost :: any ist hier hilfreich –
Ich möchte nicht einen Dritten Bibliothek –
Blick auf den Code der Verstärkung verwenden :: any und reimplementieren es (dies kann eine Weile dauern). oder warte bis C++ 17 dann hast du std :: any – Hayt