2017-07-20 4 views
-1

Der Vorgesetzte bittet mich, ein ganzes Ruby TK GUI-Programm zu QML & C++ zu ändern. Nicht zulassen, Geschäftslogik und Animation in QML zu schreiben. Sie möchten QML nur für die Anzeige Image verwenden und diese Bilder auf der C++ - Seite, sogar Animation, steuern. Das größte Problem ist das Ruby-Programm, das ich bekam, nur Massen- und komplexer Code, ohne einen einzigen Kommentar und Dokument über den Code.Jeder Weg, C++ zu werden, entschlüsselt

Also versuche ich einfach den Ruby in C++ Art zu schreiben. Aber Ruby ist die Ente tippen, gibt es eine Möglichkeit, C++ Enten tippen zu machen? Wie auto Mitgliedsvariable.

Oder soll ich aufgeben und zurücktreten?

+0

'void *' ist die Wurzel allen Übels. – meowgoesthedog

+1

verwirren Sie nicht das Auto-Schlüsselwort mit schwacher Typisierung - es ist da, um die Eingabe des Typs zu speichern, wenn es vom Compiler abgeleitet werden kann – Jimmy

+1

Eine bessere Frage wäre hier, wie ein kleines Stück Code von Ruby nach C++ zu portieren, und das würde erfordern um zu zeigen, was du versucht hast, bevor du fragst. –

Antwort

1

Sie können nicht die Art Sicherheitsregeln von C++ deaktivieren, aber man kann versuchen einige Idiome mit Typ-Löschtechnik schwach typisierten Sprachen verfügbar zu simulieren, die unter Verwendung von void* wie std::any (die in der eingeführt werden soll, durchgeführt werden kann kommender C++ 17 Standard).

Eine andere Alternative ist eine markierte Union wie std::variant (auch in C++ 17) oder QVariant, da Sie Qt verwenden, wie von Mike hingewiesen. Eine getaggte Union muss die Liste potenzieller Typen kennen, die die Variable enthalten kann, ist aber möglicherweise einfacher mit Visitor-Mustern zu arbeiten, bei denen es sich im Wesentlichen um eine stark typisierte Version der Laufzeittypauswahl handelt.

Oder soll ich aufgeben und zurücktreten?

Vielleicht ist es besser zu Redesign. Das Konvertieren des Programms in stark typisierte Algorithmen kann vorteilhaft sein.

+1

seit dieser Frage ist markiert "qt". Ich denke, es ist erwähnenswert, dass Qt bereits "QVariant" hat. . . – Mike

+0

@Mike Danke, das ist, was ich suche! – Jiu

Verwandte Themen