2009-08-20 13 views
8

Estoy trabajando en Visual C++. Tengo dos archivos .cpp en el mismo archivo fuente. ¿Cómo puedo acceder a otra función de clase (.cpp) en esta .cpp principal?¿Tiene acceso a la función miembro de otro .cpp dentro del mismo archivo fuente?

+0

podría explicar por qué no se desea utilizar un archivo de cabecera? Eso podría ser útil para ayudarlo con su problema. –

+3

No creo que haya dicho que no quiere. Parece que él no sabe * cómo * hacerlo. –

Respuesta

11

debe definir su clase en un archivo .h, y implementarlo en un archivo .cpp. Luego, incluye tu archivo .h donde quieras usar tu clase.

Por ejemplo

archivo use_me.h

#include <iostream> 
class Use_me{ 

    public: void echo(char c); 

}; 

archivo use_me.cpp

#include "use_me.h" //use_me.h must be placed in the same directory as use_me.cpp 

void Use_me::echo(char c){std::cout<<c<<std::endl;} 

main.cpp

#include "use_me.h"//use_me.h must be in the same directory as main.cpp 
    int main(){ 
     char c = 1; 

     Use_me use; 
     use.echo(c); 

     return 0; 

    } 
+0

Tom, ¿Puedo acceder a la función use_me sin crear un archivo de encabezado ... – Rajakumar

+2

Claro que puede. Copie la declaración de clase 'Use_me' y péguela en lugar de las directivas' # include' en * main.cpp * y * use_me.cpp *. Eso es esencialmente lo que '# include' hace de todos modos. Serías estúpido por hacer eso, pero ciertamente es posible hacerlo. –

+0

'use_me.h' no es necesario estar en el mismo directorio que' main.cpp' ya que puede incluirlo como '#include ' – chaohuang

1

Debe colocar las declaraciones de funciones en .hpp flie, y luego #include en el archivo main.cpp.

Por ejemplo, si la función que está llamando es:

int foo(int bar) 
{ 
    return bar/2; 
} 

es necesario crear un archivo con este foobar.hpp:

int foo(int bar); 

y añadir lo siguiente a todos los .cpp archivos que requieren foo:

#include "foobar.hpp" 
+0

se limitó a decir, another.cpp clase Un { ----- } y en main.cpp, aquí es que no hay ninguna posibilidad de crear un objeto de la clase A en main.cpp? – Rajakumar

+0

gracias Nathan Fellman – Rajakumar

4

Sin crear archivos de cabecera. Use el modificador extern.

a.cpp

extern int sum (int a, int b); 

int main() 
{ 
    int z = sum (2, 3); 
    return 0; 
} 

b.cpp

int sum(int a, int b) 
{ 
    return a + b; 
} 
+3

Estoy bastante seguro de que las funciones tienen un enlace externo por defecto de todos modos . Solo necesita 'extern' en las variables. –

Cuestiones relacionadas