tôi có thể nạp chồng toán tử ngoặc bằng cách sử dụng chữ ký sau đây:Gọi ngoặc quá tải cho một con trỏ
char& operator()(const int r, const int c);
Việc sử dụng dự định này sẽ là:
// myObj is an object of type MyClass
myObj(2,3) = 'X'
char Y = myObj(2,3);
Những công trình như tôi mong đợi. Tuy nhiên, sử dụng toán tử dấu ngoặc đơn khi xử lý một con trỏ trở nên phức tạp. Tôi muốn thực hiện:
// pMyObj is a pointer to an object of type MyClass
pMyObj->(2,3) = 'X';
char Y = pMyObj->(2,3);
Tuy nhiên, cú pháp đó mang lại lỗi Error: expected a member name
(ít nhất trong VisualStudio).
Sau đây không hoạt động nhưng có vẻ phức tạp với tôi với một sự suy xét và nhiều dấu ngoặc đơn hơn đối số.
char X = (*pMyObj)(2,3);
Có cách nào để sử dụng toán tử ->
để gọi quá tải ()
không?
'pMyObj-> toán tử() (2,3)' – juanchopanza
Bạn có chắc chắn không thể loại bỏ con trỏ không? Nếu không, bạn sẽ phải chọn ít hơn của hai tệ nạn. – chris