2012-06-25 5 views
8

Beim Schreiben von C++ - Code, fange ich oft mit dem Schreiben von vollständigen 'Implementierung' Code in meinen Header-Dateien, später muss die Implementierung in eine .cpp refaktorieren Datei.Automatisch (refactor) .h in Header und Implementierung (h + cpp)

Das ist großartig, aber ich finde diesen Prozess mühsam, aber ansonsten ziemlich einfach, also fragte ich mich, ob es einen automatisierten Weg gibt, dies zu tun?

Konkret möchte ich alle Klassen- und Funktionsdefinitionen in .h in Deklarationen konvertieren und sie in einer neuen .cpp Datei deklarieren lassen.

Ich benutze xcode, aber ich bin offen für jede Lösung.

+0

XCode? Ich dachte das heißt ObjectiveC (++), nicht "plain" C++. –

+0

XCode ist nur eine generische IDE, die sich auf Objective C konzentriert. Ich war mir nicht sicher, ob ich es erwähnen sollte, aber es war besser, zu viele Informationen zu liefern. ;) – aaaidan

Antwort

9

Es gibt Lazy C++, wo Sie nur eine .lzz-Datei schreiben und es generiert .h und .cpp für Sie.

Ich freue mich wirklich auf C++ modules, wo Sie nur .cpp schreiben und die Importdatei wird automatisch generiert. Aber wir werden auf ein paar Jahre warten müssen, obwohl Clang begonnen hat, Module zu implementieren. Here sind einige Beispiele.

+0

Hey, ich mag es! Sie könnten also eine Makefile-Regel/Abhängigkeit erzeugen, die 'cpp' und' h' generiert, wenn sich '.lzz' ändert. Nett. – aaaidan

1

Sie einige Werkzeuge wie Makeheaders

können

http://www.hwaci.com/sw/mkhdr/

aber in der Regel sind diese Tools nicht vollständig, vor allem neue C++ 11 Dateien zu treffen.

+0

Mmm, sah vielversprechend aus, aber nahm eine Menge Optimierungen vor, um es kompilieren zu lassen (musste Dutzende von void-Zeigern, die von malloc zurückgegeben wurden, auf ihre korrekten Typen umwandeln). Kompiliert, aber gab keine Ausgabe, wenn ich es ausführte. Irgendwelche Ideen? – aaaidan

+0

Oh, es ist ähnlich wie lzz. So kannst du weiter lzz verwenden :) –

1

Sie könnten sich auch für Eclipse-Funktion "Refactor/Toggle-Funktion" interessieren. Es funktioniert jedoch nicht immer richtig.