2012-02-13 37 views
30

Tôi là loại mới đối với C++. Tôi gặp sự cố khi thiết lập tiêu đề của mình. Đây là từ functions.hChức năng đối số mặc định và tiêu đề

extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect *); 

Và đây là định nghĩa hàm từ functions.cpp

void 
apply_surface(int x, int y, SDL_Surface * source, SDL_Surface * 
destination,SDL_Rect *clip = NULL) 
{ 
    ... 
} 

Và đây là cách tôi sử dụng nó trong main.cpp

#include "functions.h" 
int 
main (int argc, char * argv[]) 
{ 
    apply_surface(bla,bla,bla,bla); // 4 arguments, since last one is optional. 
} 

Nhưng , điều này không biên dịch, bởi vì, main.cpp không biết tham số cuối cùng là tùy chọn. Làm thế nào tôi có thể thực hiện công việc này?

+0

bạn đã thử thêm tiêu đề chưa? – PlasmaHH

Trả lời

57

Bạn thực hiện khai báo (ví dụ: trong tệp tiêu đề - functions.h) chứa tham số tùy chọn, không phải định nghĩa (functions.cpp).

//functions.h 
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * clip = NULL); 

//functions.cpp 
void apply_surface(int x, int y, SDL_Surface * source, SDL_Surface * 
destination,SDL_Rect *clip /*= NULL*/) 
{ 
    ... 
} 
+5

Để làm rõ, khai báo là một phần trong tiêu đề. –

8

Giá trị thông số mặc định phải nằm trong khai báo hàm (functions.h), chứ không phải trong định nghĩa hàm (function.cpp).

1

Sử dụng:

extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * = NULL); 

(lưu ý tôi không thể kiểm tra nó ở đây, không có một trình biên dịch lân cận).

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