Tôi đã quá tải [] nhà điều hành trong lớp học của tôi Interval trở phút hoặc giây.Quá tải toán tử subscript "[]" trong l-giá trị và r có giá trị trường hợp
Nhưng tôi không chắc chắn cách chỉ định giá trị cho phút hoặc giây thứ hai bằng toán tử [].
Ví dụ: Tôi có thể sử dụng báo cáo này
cout << a[1] << "min and " << a[0] << "sec" << endl;
nhưng tôi muốn quá tải toán tử [], vì vậy mà tôi thậm chí có thể gán giá trị cho phút hoặc giây sử dụng
a[1] = 5;
a[0] = 10;
My mã:
#include <iostream>
using namespace std;
class Interval
{
public:
long minutes;
long seconds;
Interval(long m, long s)
{
minutes = m + s/60;
seconds = s % 60;
}
void Print() const
{
cout << minutes << ':' << seconds << endl;
}
long operator[](int index) const
{
if(index == 0)
return seconds;
return minutes;
}
};
int main(void)
{
Interval a(5, 75);
a.Print();
cout << endl;
cout << a[1] << "min and " << a[0] << "sec" << endl;
cout << endl;
}
I biết tôi phải khai báo các biến thành viên là riêng tư, nhưng tôi đã tuyên bố ở đây là công khai chỉ vì sự thuận tiện của tôi.
có vẻ như một ví dụ khủng khiếp về quá tải của nhà điều hành vì lợi ích của nó. Bạn có một số yêu cầu tối nghĩa buộc bạn phải làm điều này? Nếu không nó chỉ là obfuscation mã. – jalf
@ jalf Tôi biết đó là một ví dụ khủng khiếp, nhưng tôi muốn quá tải toán tử [] trong lớp chung cho Object Array. – Searock
@jalf: tại sao http://cpp.sh/4fiz hoạt động mà không có bất kỳ lỗi trình biên dịch nào? Không nên trình biên dịch ném một lỗi? Nó không mang lại kết quả gì. Điều gì là chính xác xảy ra trong chương trình này. – Destructor