2009-04-03 23 views
6

Tôi đã xem qua một số mã mà nắm như sau:Tại sao bạn sẽ đúc các phần của bài tập?

enum BAR { /* enum values omitted */ } 

class Foo{ 
public: 
    void set(const BAR& bar); 
private: 
    uint32_t bits; 
}; 

void Foo::set(const BAR& bar) 
{ 
(uint32_t&)bits = bits | bar; 
} 

Tôi không hiểu được quan điểm của các diễn viên c-phong cách trong việc chuyển nhượng trong Foo :: set. Tại sao bạn sẽ đúc các lhs của một bài tập? Tôi có điên hay điều này có mục đích không?

+0

để tránh cảnh báo trình biên dịch về mất chính xác, có thể? Tôi không chắc lắm. –

Trả lời

8

Trong trường hợp này, tôi không thể thấy bất kỳ lý do nào cho dàn diễn viên, vì nội dung đang truyền có cùng kiểu với dàn diễn viên. Nói chung, nó có thể được sử dụng để buộc một toán tử gán cụ thể được sử dụng.

Bây giờ tôi sẽ lặp lại câu thần chú của tôi: Nếu mã của bạn chứa phôi, có thể có điều gì đó sai với mã hoặc thiết kế và bạn nên kiểm tra cả hai với chế độ xem để xóa bỏ diễn viên.

+0

Vâng. Thời gian qua tôi đã sử dụng một, tôi đã sử dụng API Win32. Có gì đó không đúng với mã, và đó không phải là tôi. Có lẽ một trong những điều đó trông giống như một ý tưởng tốt hơn mười lăm năm trước. –

+0

+1 cho câu thần chú hay. – bayda

-1

Nếu bạn chỉ muốn cho phép gán giá trị nhất định (ví dụ: việc kiểm tra bài tập được thực hiện như thể biến được nhập theo dàn diễn viên, thay vì chỉ cho phép bất kỳ thứ gì đi qua như thể bạn đã mở rộng hình chữ nhật).

0

Nó không có gì cả, theo như tôi có thể nói, ngay cả khi BAR được xác định với các giá trị ngoài phạm vi uint32. Trông như tiếng ồn với tôi.

2

Tôi đồng ý với Neil Butterworth, diễn viên trong trường hợp này là không cần thiết và đó là một "mã mùi" nhất định.

0

Tôi không thể nói chắc chắn mà không biết nền, nhưng có vẻ như ai đó có thể đã lấy một số mã C hiện có và gói nó trong một lớp C++. Dàn diễn viên có thể còn sót lại từ mã c.

0

Tôi không chắc chắn điều này là hợp pháp. một dàn diễn viên không phải là một lvalue ...

Dù bằng cách nào, nó trông khá vô nghĩa.

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