2009-08-20 6 views
8

Je travaille dans Visual C++. J'ai deux fichiers .cpp dans le même fichier source. Comment puis-je accéder à une autre classe (.cpp) dans ce fichier .cpp principal?Accéder à la fonction membre d'un autre fichier .cpp dans le même fichier source?

+0

Pourriez-vous s'il vous plaît expliquer pourquoi vous ne voulez pas utiliser un fichier d'en-tête? Cela pourrait être utile pour vous aider avec votre problème. –

+3

Je ne pense pas qu'il a dit qu'il ne veut pas. On dirait qu'il ne sait pas * comment *. –

Répondre

11

Vous devez définir votre classe dans un fichier .h, et implémentez-le dans un fichier .cpp. Ensuite, incluez votre fichier .h où vous voulez utiliser votre classe.

Par exemple

fichier

use_me.h

#include <iostream> 
class Use_me{ 

    public: void echo(char c); 

}; 
fichier

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, puis-je accéder à la fonction use_me sans créer de fichier d'en-tête ... – Rajakumar

+2

Bien sûr, vous pouvez. Copiez la déclaration de la classe 'Use_me' et collez-la à la place des directives' # include 'dans * main.cpp * et * use_me.cpp *. C'est essentiellement ce que '# include 'fait de toute façon. Vous seriez stupide de faire cela, mais c'est certainement possible. –

+0

'use_me.h' n'est pas nécessaire étant dans le même répertoire que' main.cpp' puisque vous pouvez l'inclure comme '#include ' – chaohuang

1

Vous devez placer les déclarations de fonction dans un fichier .hpp, puis #include dans le fichier main.cpp.

Par exemple, si la fonction que vous appelez est:

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

vous devez créer un fichier foobar.hpp avec ceci:

int foo(int bar); 

et ajoutez ce qui suit à tous Cpp fichiers qui appellent foo:

#include "foobar.hpp" 
+0

simplement dit, another.cpp classe A {} ----- et main.cpp, voici il y a des possibilités est de créer un objet à la classe A dans main.cpp? – Rajakumar

+0

merci Nathan Fellman – Rajakumar

4

sans créer de fichiers d'en-tête. Utilisez le modificateur 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

Je suis assez sûr que les fonctions ont un lien externe par défaut de toute façon . Vous avez seulement besoin d'extern sur les variables. –

Questions connexes