2013-04-27 25 views
8

Tôi định nghĩa một lớp NS và tôi muốn có thể thực hiện các phép toán trên các đối tượng của lớp này. I, thành công biên soạn quá tải +, -, *, /, ... Vấn đề của tôi là tôi không thể biên dịch mã trong đó có một phần như thế này:C++ quá tải toán tử, xác định tiêu cực của đối tượng

NS a,b; 
a = -b; 

Làm thế nào tôi có thể định nghĩa tiêu cực của đối tượng?

+6

Bằng cách đọc C++ cuốn sách! –

Trả lời

18

Bạn làm điều đó theo cách rất giống với quá tải toán tử nhị phân -. Thay vào đó, bạn làm cho nó trở thành một hàm rỗng nếu một thành viên của nó, hoặc một hàm unary nếu nó không phải là thành viên. Ví dụ, như một thành viên:

class NS 
{ 
    public: 
    // Applies to this 
    NS operator-() { /* implement */ } 
}; 

Là một tổ chức phi thành viên:

class NS 
{ 
    friend NS operator-(const NS&); 
}; 

// Applies to obj 
NS operator-(const NS& obj) { /* implement */ }