2012-06-25 12 views
8

Al escribir código C++, a menudo empiezo escribiendo el código completo de "implementación" en mis archivos de encabezado, y luego necesito refactorizar la implementación en un .cpp archivo.División automática (refactor) .h en el encabezado y la implementación (h + cpp)

Esto es genial, pero este proceso me parece laborioso, pero por lo demás es bastante fácil, así que me preguntaba si existe alguna forma automática de hacerlo.

Específicamente, quiero convertir todas las definiciones de clases y funciones en el .h a las declaraciones, y las he declarado en un nuevo archivo .cpp.

Estoy usando xcode, pero estoy abierto a cualquier solución.

+0

XCode? Pensé que eso significaba ObjectiveC (++), no "simple" C++. –

+0

XCode es solo un IDE genérico que se enfoca en el Objetivo C. No estaba seguro de si molestarse en mencionarlo, pero es mejor proporcionar demasiada información. ;) – aaaidan

Respuesta

9

Hay Lazy C++ donde solo escribe un archivo .lzz y genera .h y .cpp para usted.

Tengo muchas ganas de que C++ modules donde solo escriba .cpp y el archivo de importación se genere automáticamente. Pero tendremos que esperar unos años aunque Clang ha comenzado a implementar módulos. Here son algunos ejemplos.

+0

¡Oye, me gusta! De modo que podría tener una regla/dependencia de archivo MAKE que genere 'cpp' y' h' cuando cambie '.lzz'. Bonito. – aaaidan

1

que pueden utilizar algunas herramientas como Makeheaders

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

pero, en general, estas herramientas no están completos, sobre todo conocer nuevos C++ 11 archivos.

+0

Mmm, parecía prometedor, pero tomó muchos ajustes para compilarlo (tuvo que convertir docenas de punteros vacíos devueltos por malloc a sus tipos correctos). Compilado, pero no dio salida cuando lo ejecuté. ¿Algunas ideas? – aaaidan

+0

Oh, es similar a lzz. Entonces puedes continuar usando lzz :) –

1

Puede que también esté interesado en la función de Eclipse "Refactor/función de palanca". Sin embargo, no siempre funciona bien.

Cuestiones relacionadas