2012-06-27 32 views
27

xem xét như sau:Calling điều hành quá tải() từ con trỏ đối tượng

class MyClass { 
public: 
    int operator()(int a, int b); 
}; 

Khi bạn có:

MyClass* m = new MyClass(); 

tôi muốn truy cập các phương pháp operator(), vì vậy tôi có thể:

(*m)(1,2); 

Nhưng tôi có thể làm điều này?

m->(1,2); 
+0

'mydummy' một giây,' T' tiếp theo? – Ashe

Trả lời

46

Không phải với cú pháp đó, nhưng bạn có thể làm

m->operator()(1,2); 
+1

Thankyou Luchian – Andry

+0

@Thêm bất cứ lúc nào. –

0

Nếu bạn sẽ không thay đổi m (những gì nó trỏ tới), bạn có thể thay thế (*m) bởi một tài liệu tham khảo:

MyClass *m = new MyClass(); 
MyClass &r = *m; 
r(1, 2); 

Xem this answer để biết thêm chi tiết.

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