2009-08-20 28 views
8

Tôi đang làm việc trong Visual C++. Tôi có hai tệp .cpp trong cùng một tệp nguồn. Làm thế nào tôi có thể truy cập một lớp (.cpp) chức năng trong chính này .cpp?Truy cập chức năng thành viên của một tệp .cpp khác trong cùng một tệp nguồn?

+0

Ông có thể vui lòng giải thích lý do tại sao bạn không muốn sử dụng một tập tin tiêu đề? Điều đó có thể hữu ích để giúp bạn giải quyết vấn đề của bạn. –

+3

Tôi không nghĩ anh ấy nói anh ấy không muốn. Có vẻ như anh ấy không biết * làm thế nào *. –

Trả lời

11

Bạn nên xác định lớp học của mình trong tệp .h và triển khai nó trong một tệp .cpp. Sau đó, bao gồm tập tin .h của bạn bất cứ nơi nào bạn muốn sử dụng lớp học của bạn.

Ví dụ

tập tin use_me.h

#include <iostream> 
class Use_me{ 

    public: void echo(char c); 

}; 

tập tin 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, Tôi có thể truy cập chức năng use_me mà không cần tạo tệp tiêu đề ... – Rajakumar

+2

Chắc chắn bạn có thể. Sao chép khai báo lớp 'Use_me' và dán nó vào vị trí của các chỉ thị' # include' trong * main.cpp * và * use_me.cpp *. Đó là cơ bản những gì '# include' nào. Bạn sẽ là ngu ngốc để làm điều đó, nhưng nó chắc chắn có thể làm. –

+0

'use_me.h' là không cần thiết trong cùng thư mục với' main.cpp' vì bạn có thể bao gồm nó như '#include ' – chaohuang

1

Bạn nên đặt các khai báo hàm trong một tệp .hpp flie và sau đó #include trong tệp main.cpp.

Ví dụ, nếu các chức năng bạn đang gọi điện thoại là:

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

bạn cần phải tạo một file foobar.hpp với điều này:

int foo(int bar); 

và thêm dòng sau vào tất cả cpp các tệp gọi foo:

#include "foobar.hpp" 
+0

chỉ cần nói, another.cpp lớp A { ----- } và trong main.cpp, đây là khả năng tạo đối tượng cho lớp A trong main.cpp? – Rajakumar

+0

cảm ơn Nathan Fellman – Rajakumar

4

Nếu không tạo ra tập tin header. Sử dụng công cụ sửa đổi 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

Tôi chắc chắn rằng các hàm có liên kết extern theo mặc định . Bạn chỉ cần 'extern' trên các biến. –

Các vấn đề liên quan