Tôi đã tự hỏi liệu có ai biết giới hạn trên toán tử chuyển đổi/typecast không?Có bất kỳ giới hạn nào về các loại trong toán tử định kiểu không?
Vì vậy, ví dụ, tôi có thể có các nhà khai thác ghi đè sau:
class Test {
operator int() { return 0; };
operator int*() { return nullptr; };
}
Đối với một chức năng thường xuyên, tôi cũng có thể có một con trỏ đến kiểu mảng. Ví dụ.
int (*MyFunc())[4] { return nullptr; };
Tuy nhiên, tôi không biết cách làm tương tự cho nhà điều hành chuyển đổi (hoặc nếu điều này là hợp pháp). Tôi đã thử một vài biến thể khác nhau và VS2010 và không hoạt động. (Chẳng hạn như :)
operator int (*())[4] { return nullptr; };
operator int(*)[4]() { return nullptr; };
Tôi không chắc chắn đây có phải là giới hạn trong VS2010 hoặc nếu có giới hạn chung về các loại có thể được sử dụng trong toán tử chuyển đổi. Tôi đã cố gắng tìm kiếm tiêu chuẩn trực tuyến mà không có may mắn. Có ai biết không? Trước khi bất cứ ai hỏi "tại sao bạn thậm chí muốn làm điều đó", đó là mã được tạo tự động. Mặc dù tôi không lường trước được con trỏ tới đầu vào mảng, nhưng tôi muốn có thể tạo mã nếu nó là hợp pháp trong C++.
Cảm ơn. Đó là câu trả lời chính xác câu hỏi của tôi. –
Nhận xét của Downvote? – GManNickG