typedef boost::variant<int, double> Type;
class Append: public boost::static_visitor<>
{
public:
void operator()(int)
{}
void operator()(double)
{}
};
Type type(1.2);
Visitor visitor;
boost::apply_visitor(visitor, type);
Có thể thay đổi người truy cập như vậy mà nó nhận dữ liệu thêm như sau:boost :: static_visitor với nhiều đối số
class Append: public boost::static_visitor<>
{
public:
void operator()(int, const std::string&)
{}
void operator()(double, const std::string&)
{}
};
Chuỗi này thay đổi giá trị trong suốt cuộc đời của đối tượng Nối. Việc truyền chuỗi trong thông qua hàm tạo không phải là một tùy chọn trong trường hợp này.
Tại sao nó không phải là một lựa chọn? Bạn có thể tạo một đối tượng chắp thêm với các chuỗi khác nhau trong trường hợp thay đổi. – kennytm
Giá trị chuỗi sẽ thay đổi vào thời gian nào? Tôi không thấy lý do tại sao nó không thể được thực hiện với một nhà xây dựng không. – Mene
@KennyTM Lớp Append có một số phụ thuộc thông qua hàm tạo của nó. Nếu tôi xây dựng lại đối tượng Append trong lớp của tôi, thì lớp này cũng sẽ cần phải thực hiện tất cả các phụ thuộc được sử dụng bởi Append thông qua hàm tạo của nó. Tôi đã hy vọng rằng lớp của tôi sẽ đơn giản lấy một đối tượng Append thông qua hàm tạo của nó. – Baz