Vì vậy, Nếu tôi có một cái gì đó như thế nàyđầu ra quá tải << nhà điều hành cho một lớp học để in các tuple bên trong nó
template<typename... Args >
class tuple_class
{
public:
std::tuple<Args...> tup;
/*I left out the other functions */
};
Tôi muốn nạp chồng toán tử < < để nó sẽ đệ quy in tuple khi kêu gọi lớp.
ví dụ:
auto a = tuple_class(1, 2 ,3);
std::cout << a << endl;
hy vọng sẽ in '123'
Ive nhìn thấy ví dụ khác về máy in tuple nhưng tôi không thể áp dụng nó vào lớp học của tôi mà không cần phải một loạt các rắc rối
Tôi nghĩ rằng tôi nên bắt đầu với một hàm thành viên như thế này
template<typename... Args>
friend std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m);
và sau đó là chức năng thực tế bên ngoài lớp
template<typename... Args>
std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m)
{
os << "SOMETHING" << std::endl;
return os;
}
Điều đó thực sự hiệu quả khi tôi gọi nhà điều hành < < trên lớp của tôi. Nhưng tôi không có đầu mối làm thế nào để làm cho nó thực sự in tuple.
Bất kỳ trợ giúp sẽ được đánh giá
Bạn cần phải đệ quy đệ quy mẫu variadic thông qua chuyên môn từng phần. Xem [câu hỏi này] (http://stackoverflow.com/questions/7124969/recursive-variadic-template-to-print-out-the-contents-of-a-parameter-pack). – denniskb