Lấy địa chỉ phần tử tạm thời trong Class như thế nào

ví dụ em muốn sử dụng dịa chỉ của một biến thành phần của đối tượng (class) trong một hàm thành viên của đối tượng khác thì làm sao.

SDL_RenderCopy(renderer, CollisionImage, NULL, &(CollisionRect.GetRectangle()) );

lỗi:error: taking address of temporary [-fpermissive]

giải tích code:

SDL_rendercopy lằm trong một class A,
class A lại lấy biến thành viên từ một class B thông qua một hàm get.

Lỗi này là bạn đang cố gắng truy cập vào một địa chỉ của biến tạm (temp). Biến này chỉ sống trên dòng lệnh được gọi, sẽ bị xóa ngay trước khi truy cập vào, vậy nên compiler sẽ chặn lại.

Điều quan trọng mà mình chưa hiểu: CollisionRect ở đây là biến hay tên class? Và đoạn code phía trên của dòng đó như thế nào?

3 Likes

.GetRectangle() phải trả về const SDL_Rect& thay vì trả về 1 biến copy SDL_Rect. Biến collisionRect phải chứa SDL_Rect này.

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