Struct của thư viện SDL

Em chào anh chị, em có một đoạn code:

typedef struct Bullet
{
    int Type;
    SDL_Rect Orth_Pos_Des_Bullet;
    SDL_Rect Iso_Pos_Des_Bullet;
    SDL_Rect Pos_Sor_Bullet;
    int Speed_Bullet;
    SDL_Texture Texture_Bullet;
};
Bullet Object_Bullet;
Filed "Texture_Bullet" has incomplete type 'SDL_Texture';

Em đã tìm hiểu trên mấy trang nước ngoài thì để sửa lỗi thì thấy nếu em khai báo SDL_Texture * Texture_Bullet thì hết lỗi.
Cho em hỏi sao không khai báo con trỏ thì lại lỗi vậy ạ, em cám ơn.

Hi Cường Cao Huy.
Bạn cần hiểu texture là gì. Thường thì các thư viện đồ họa quản lý nó bằng cách load và 1 lần sau dó dùng lại nhiều lần.

5 Likes

Bạn chưa include header của SDL_Texture

2 Likes

chắc là kiểu như FILE * ấy, ko xài trực tiếp FILE được mà phải đi xài FILE *, 1 cách data hiding của C :V :V :V

4 Likes

Include SDL là có Texture mà, Ok, em cám ơn, để em xem xét thêm.

Bạn include SDL.h thì mới chỉ có phần khai báo của struct SDL_Texture thôi.
C/C++ pointer thì ko cần full declare, vì pointer luôn có size cố định ko phân biệt kiểu dữ liệu, còn biến thông thường thì trình biên dịch nó cần biết size, thông tin cụ thể của kiểu dữ liệu đó, cho nên bạn phải include header / full declare type đó trước.

3 Likes

Incomplete type: struct cũng có thể khai báo trước trong header để lấy cái tên như sau
struct SDL_Texture;
nhờ đó đạt được info hiding. Nếu #include mỗi header thì chỉ dùng được con trỏ tới struct đó thôi.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?