Tôi muốn viết một hàm có danh sách đối số biến. Tôi muốn khám phá các lựa chọn của tôi. Tôi khá chắc chắn rằng tôi đã vượt qua một lớp mẫu tăng cường được thiết kế cho mục đích này, nhưng tôi không thể nghĩ ra tên của nó? Bất cứ ai có thể cho tôi biết? hoặc tôi đã mơ ước điều này! Cảm ơnDanh sách đối số biến với tăng?
8
A
Trả lời
7
Nếu bạn chỉ cần chấp nhận một số biến đối số cùng loại, việc sử dụng vùng chứa sẽ là điều phổ biến cần làm. Tạo ra các container tuy nhiên có thể được nới lỏng sử dụng Boost.Assign:
void f(const std::vector<int>& vec) {}
f(boost::assign::list_of(1)(2)(3)(4));
Hoặc bạn có thể đi cho nhà khai thác quá tải (ví dụ của operator()
hoặc operator<<
) cho mình, tương tự như cách tiếp cận thực hiện bởi các con suối thư viện tiêu chuẩn:
op() << arg1 << arg2 << arg3;
Nếu bạn thực sự muốn cung cấp chức năng variadic loại an toàn (không sử dụng tính năng C++ 0x), Boost.Preprocessor có thể trợ giúp. Ví dụ chung:
#define OUT(z, n, name) << name ## n
#define MAKE_FUNC(z, n, unused) \
template<class T BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)> \
void func(T t BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(n, T, t)) { \
std::cout << t BOOST_PP_REPEAT(n, OUT, t) << std::endl; \
}
BOOST_PP_REPEAT(9, MAKE_FUNC, ~) // generates func() versions taking 1-10 arguments
func(1, "ab", 'c'); // prints "1abc"
Các vấn đề liên quan
- 1. Danh sách đối số biến đổi với Visual Basic?
- 2. gdb | xem danh sách đối số biến số
- 3. Đi qua đối số biến khác chức năng chấp nhận một danh sách đối số biến
- 4. Chức năng trừu tượng và danh sách đối số biến
- 5. Mở danh sách đối số bằng mẫu biến thể
- 6. Thêm vào danh sách so với Tăng
- 7. Danh sách đối số quá dài - Unix
- 8. Đọc danh sách trong đối số hàm
- 9. Quy trình lưu trữ MySQL với danh sách đối số biến
- 10. Lọc danh sách bằng Python với các đối số
- 11. defun với một danh sách như là đối số
- 12. Tăng số lượng mục trong danh sách Chạy MRU
- 13. Scala: Làm thế nào để xác định một hàm ẩn danh với một danh sách đối số biến?
- 14. Tăng đối số giữ chỗ liên kết bằng số đối số Mẫu biến thể
- 15. Haskell danh sách hiểu về số biến các chuỗi
- 16. Quyền đối với mục danh sách SharePoint
- 17. TestCase với danh sách hoặc thông số
- 18. Trình lặp biến dạng, và lặp qua danh sách trong đối tượng danh sách
- 19. Python đi qua danh sách như là đối số
- 20. Danh sách đối số mẫu có độ dài thay đổi?
- 21. biến SQL để giữ danh sách các số nguyên
- 22. danh sách vòng lặp không gia tăng
- 23. Loại danh sách đối số có độ dài biến trong Scala là gì?
- 24. Biến Danh sách đen AppEngine thành danh sách trắng
- 25. Danh sách với số thập phân
- 26. Truyền tới danh sách chung các biến số động
- 27. Làm cách nào để chuyển danh sách dưới dạng danh sách các đối số trong vợt?
- 28. Danh sách tăng cường xâm nhập móc
- 29. Kiểm tra xem danh sách các số nguyên có tăng thêm một số
- 30. Scala bởi các thông số tên với nhiều danh sách đối số và tách lạng bộ
Bạn có nghĩa là số đối số biến nhưng một loại hoặc cũng là các loại tùy ý? –
Tôi không chắc chính xác thư viện được cung cấp là gì, tôi không thể định vị lại nó, tôi đoán đó là một số cải tiến hơn va_list - có thể là loại an toàn – aukm
Chức năng của bạn chỉ cần lấy đối số của một kiểu hay không? –