2009-08-20 19 views
8

Ich arbeite in Visual C++. Ich habe zwei CPP-Dateien in der gleichen Quelldatei. Wie kann ich auf eine andere Klassenfunktion (.cpp) in dieser Haupt-CPP zugreifen?Zugriff auf Mitgliedsfunktion einer anderen .cpp innerhalb derselben Quelldatei?

+0

Könnten Sie bitte erklären, warum Sie wollen keine Header-Datei verwenden? Das könnte nützlich sein, um Ihnen bei Ihrem Problem zu helfen. –

+3

Ich glaube nicht, dass er gesagt hat, dass er nicht will. Es sieht so aus, als wüsste er nicht wie * zu *. –

Antwort

11

Sie sollten Ihre Klasse in einer .h-Datei definieren, und Implementieren Sie es in einer CPP-Datei. Fügen Sie Ihre .h-Datei dann überall dort ein, wo Sie Ihre Klasse verwenden möchten.

Zum Beispiel

Datei use_me.h

#include <iostream> 
class Use_me{ 

    public: void echo(char c); 

}; 

Datei 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, kann ich auf Use_me-Funktion zugreifen, ohne Header-Datei zu erstellen ... – Rajakumar

+2

Sicher können Sie. Kopieren Sie die 'Use_me'-Klassendeklaration und fügen Sie sie an Stelle der' # include'-Anweisungen in * main.cpp * und * use_me.cpp * ein. Das ist im Grunde das, was "# include" sowieso macht. Du wärst dumm, das zu tun, aber es ist sicherlich möglich. –

+0

'use_me.h' ist nicht notwendig im gleichen Verzeichnis wie' main.cpp' zu liegen, da man es wie '#include ' – chaohuang

1

Sie sollten die Funktionsdeklarationen in eine .hpp-Datei und dann #include in die main.cpp-Datei einfügen.

Zum Beispiel, wenn die Funktion Sie anrufen ist:

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

Sie brauchen eine foobar.hpp Datei mit diesem zu erstellen:

int foo(int bar); 

und fügen Sie den folgenden auf alle CPP Dateien, die foo nennen:

#include "foobar.hpp" 
+0

einfach gesagt, another.cpp Klasse A { ----- } und in main.cpp, hier ist es ist keine Möglichkeiten, ein Objekt der Klasse A in main.cpp zu schaffen? – Rajakumar

+0

danke Nathan Fellman – Rajakumar

4

Ohne Header-Dateien zu erstellen. Verwenden Sie den Modifizierer 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

einbinden kann Ich bin mir ziemlich sicher, dass Funktionen extern standardmäßig verlinkt sind . Sie brauchen nur extern auf Variablen. –

Verwandte Themen