2009-08-20 16 views
8

Pracuję w Visual C++. Mam dwa pliki .cpp w tym samym pliku źródłowym. Jak uzyskać dostęp do innej funkcji klasy (.cpp) w tym głównym pliku .cpp?Dostęp do funkcji członka innego pliku .cpp w obrębie tego samego pliku źródłowego?

+0

Czy mógłbyś wyjaśnić, dlaczego nie chcesz użyć pliku nagłówka? To może być pomocne, aby pomóc Ci w rozwiązaniu problemu. –

+3

Nie sądzę, żeby powiedział, że nie chce. Wygląda na to, że nie wie * jak *. –

Odpowiedz

11

należy zdefiniować swoją klasę w pliku .h, a zaimplementuj go w pliku .cpp. Następnie dołącz plik .h wszędzie tam, gdzie chcesz używać swojej klasy.

Na przykład

plik use_me.h

#include <iostream> 
class Use_me{ 

    public: void echo(char c); 

}; 

plik 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, Czy mogę uzyskać dostęp do funkcji use_me bez tworzenia pliku nagłówkowego ... – Rajakumar

+2

Oczywiście. Skopiuj deklarację klasy "Use_me" i wklej ją zamiast dyrektyw '# include' w * main.cpp * i * use_me.cpp *. Zasadniczo to co robi '# include'. Byłbyś głupi, że to robisz, ale na pewno można to zrobić. –

+0

'use_me.h' nie jest konieczny będąc w tym samym katalogu co' main.cpp', ponieważ możesz go dołączyć jak '#include ' – chaohuang

1

Powinieneś umieścić deklaracje funkcji w pliku .hpp, a następnie #include w pliku main.cpp.

Na przykład, jeśli funkcja dzwonisz jest:

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

trzeba utworzyć plik foobar.hpp z tym:

int foo(int bar); 

i dodać następujące wszystkich .cpp pliki, które wymagają foo:

#include "foobar.hpp" 
+0

prostu powiedział, another.cpp klasa A { ----- } oraz w main.cpp, oto tam jest wszelkie możliwości, aby stworzyć obiekt do klasy A main.cpp? – Rajakumar

+0

dzięki Nathan Fellman – Rajakumar

4

bez tworzenia plików nagłówkowych. Użyj modyfikatora 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

Jestem całkiem pewny, że funkcje mają domyślnie linkowanie mimo wszystko . Potrzebujesz tylko "extern" na zmiennych. –

Powiązane problemy