2009-08-20 19 views
8

Sto lavorando in Visual C++. Ho due file .cpp nello stesso file sorgente. Come posso accedere ad un'altra funzione di classe (.cpp) in questo file .cpp principale?È possibile accedere alla funzione membro di un altro file .cpp all'interno dello stesso file sorgente?

+0

Potrebbe spiegare il motivo per cui non si desidera utilizzare un file di intestazione? Potrebbe essere utile per aiutarti con il tuo problema. –

+3

Non penso che abbia detto che non vuole. Sembra che non sappia * come * a. –

risposta

11

è necessario definire la classe in un file .h, e implementalo in un file .cpp. Quindi, includi il tuo file .h ovunque tu voglia usare la tua classe.

Per esempio

file di use_me.h

#include <iostream> 
class Use_me{ 

    public: void echo(char c); 

}; 

file di 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, posso accedere alla funzione use_me senza creare il file di intestazione ... – Rajakumar

+2

Certo che puoi. Copia la dichiarazione della classe 'Use_me' e incollala al posto delle direttive' # include' in * main.cpp * e * use_me.cpp *. Questo è essenzialmente ciò che "# include" fa comunque. Saresti stupido a farlo, ma è certamente possibile farlo. –

+0

'use_me.h' non è necessario essere nella stessa directory di' main.cpp' dato che puoi includerlo come '#include ' – chaohuang

1

È necessario inserire le dichiarazioni di funzione in un file .hpp, quindi #include nel file main.cpp.

Per esempio, se la funzione che si sta chiamando è:

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

è necessario creare un file foobar.hpp con questo:

int foo(int bar); 

e aggiungere quanto segue a tutti cpp file che chiamano foo:

#include "foobar.hpp" 
+0

semplicemente detto, another.cpp classe A { ----- } e in main.cpp, qui è che non c'è è un qualsiasi possibilità di creare un oggetto di classe A in main.cpp? – Rajakumar

+0

grazie Nathan Fellman – Rajakumar

4

senza creare file di intestazione. Utilizzare il modificatore 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

Sono quasi certo che le funzioni hanno il collegamento extern di default comunque . Hai solo bisogno di "estern" sulle variabili. –

Problemi correlati