Tôi có lớp C++ MyObject
và tôi muốn có thể cung cấp dữ liệu này giống như một osstream (nhưng không giống như luồng trực tiếp, có dữ liệu đến được định dạng cách đặc biệt). Tôi không thể tìm ra cách để quá tải một nhà điều hành cho MyObject ăn đầu vào cho nó.Có một lớp C++ hoạt động giống như một dòng ost tùy chỉnh, dòng
class MyObject {
public:
ostringstream s;
FEEDME
};
int main() {
MyObject obj;
obj.FEEDME << "Hello" << 12345;
// I want obj.s == ":Hello::12345:"
}
Tôi muốn nó như vậy mỗi item ăn ở được bao quanh bởi::
Vì vậy, trong ví dụ trên, s = ": Xin chào :: 12345" nên kết quả cuối cùng. Câu hỏi của tôi là gì, làm thế nào tôi có thể nói với đối tượng rằng khi nào có một <<something
, hãy đặt:: xung quanh cái gì đó.
Điều này có khả thi không?
Cảm ơn, tôi nghĩ rằng tôi có chỗ đứng trên làm thế nào để thực hiện nó bây giờ, vẫn nhận được một lỗi "lỗi: sử dụng không hợp lệ của thành viên (? Bạn đã quên '&')" cho MyObject & operator < <(const T & x) { Nhưng sẽ gây rối với nó và được giải quyết. Cảm ơn bạn tốt. –
Tôi nghĩ rằng biên dịch tốt trong g ++ 4.3.3, trình biên dịch nào đang sử dụng? –
g ++ (GCC) 4.3.2, bạn chính xác nó biên dịch và hoạt động chính xác như tôi muốn nó! Cảm ơn bạn. Vấn đề có vẻ là một cái gì đó đặc biệt cho chương trình của tôi. –