Tôi đã thử nghiệm với C++ và tôi đã gặp một vấn đề mà tôi không biết cách giải quyết.C++ sao chép đối tượng luồng
Về cơ bản, tôi đã phát hiện ra rằng bạn không thể sao chép luồng (xem Why copying stringstream is not allowed?) và điều đó cũng áp dụng cho các đối tượng 'quấn' chúng. Ví dụ:
- Tôi tạo một lớp học với thành viên dữ liệu thuộc loại chuỗi.
- Tôi tạo một đối tượng của lớp này.
- Tôi cố sao chép đối tượng, ví dụ: "TestObj t1; TestObj t2; t1 = t2;"
Điều này làm cho C2249 lỗi:
'std :: basic_ios < _Elem, _Traits> :: operator =': không có con đường tiếp cận với thành viên tin khai báo trong cơ sở ảo 'std :: basic_ios < _Elem, _Traits>'
Vì vậy, câu hỏi của tôi là: làm thế nào tôi (tốt nhất dễ dàng) có thể sao chép các đối tượng có thành viên dữ liệu kiểu * dòng?
Full mã ví dụ:
#include <iostream>
#include <string>
#include <sstream>
class TestStream
{
public:
std::stringstream str;
};
int main()
{
TestStream test;
TestStream test2;
test = test2;
system("pause");
return 0;
}
Cảm ơn trước.
CẬP NHẬT
tôi đã quản lý để giải quyết vấn đề này nhờ các câu trả lời dưới đây. Những gì tôi đã làm là khai báo các đối tượng stream một lần và sau đó chỉ đơn giản là tham khảo chúng bằng cách sử dụng con trỏ trong các đối tượng bao bọc (ví dụ, TestStream). Cũng vậy đối với tất cả các đối tượng khác có các nhà xây dựng bản sao riêng.
Vì bạn dường như đã làm bài tập về nhà của bạn, câu hỏi được liên kết. Tại sao bạn yêu cầu hành vi này? đọc viết? –