2013-05-02 34 views
6

Tôi muốn chia sẻ (toàn cầu hóa) một số biến số vectơ (V1 và V2) giữa hai tệp cpp (A.cpp và B.cpp). Tôi đã xác định cả V1 và V2 trong A.h bằng các lệnh sau.Biến vectơ chia sẻ Trong số nhiều tệp C++

extern vector<uint64_t> V1; 
extern vector<uint64_t> V2; 

Tôi cũng đã thêm #include "A.h" vào cả tệp A.cpp và B.CPP. Bất cứ ai có thể cho tôi biết những gì khác tôi nên làm gì để có thể truy cập vào các yếu tố của V1 và V2 trong cả hai các tập tin CPP?

Cảm ơn trước

Trả lời

7

Trước tiên, bạn cần phải chọn địa điểm nơi xác định vectơ của bạn. Giả sử bạn chọn A.cpp.

Trong A.cpp (chỉ trong một tập tin - xác định cùng một đối tượng trong nhiều file sẽ mang lại nhiều định nghĩa lỗi ký tự) xác định vectơ như biến toàn cục:

vector<uint64_t> V1; 
vector<uint64_t> V2; 

Trong B.cpp (và trong tất cả các file khác mà từ đó bạn muốn truy cập V1V2) khai báo vectơ là extern. Điều này sẽ cho mối liên kết để tìm kiếm ở nơi khác cho các đối tượng thực tế:

extern vector<uint64_t> V1; 
extern vector<uint64_t> V2; 

Bây giờ, trong các bước liên kết V1V2 từ B.cpp sẽ được kết nối với V1V2 từ A.cpp (hoặc bất cứ nơi nào các đối tượng này là định nghĩa) .

+2

Tốt hơn, đặt tuyên bố vào tiêu đề được bao gồm trong đơn vị biên dịch * tất cả *, bao gồm cả phần có chứa định nghĩa. Bằng cách đó, trình biên dịch có thể kiểm tra xem định nghĩa và khai báo có phù hợp hay không. –

2

extern có nghĩa là điều này chỉ DECLARES các biến, nó không xác định chúng. Bạn cần chính xác một DEFINITION của các biến này ở đâu đó trong một số tệp nguồn (không phải đầu trang). DEFINITION trông giống như DECLARATION mà không có extern

2

Bạn đã tạo một tuyên bố trong tệp tiêu đề của mình; bây giờ bạn cần tạo định nghĩa trong một đơn vị biên dịch đơn (tệp .cpp).

Vì vậy hãy chọn tệp .cpp và đặt định nghĩa ở đó. Trong trường hợp này định nghĩa giống như khai báo, ngoại trừ không có từ khóa extern.

vector<uint64_t> V1; 
vector<uint64_t> V2; 
Các vấn đề liên quan