Rõ ràng mã bên dưới không biên dịch trong C++. Nhưng tôi có một trường hợp mà tôi muốn tham số hóa một lớp với số không hoặc nhiều mục dữ liệu dựa trên các tham số mẫu.Khai báo các biến thành viên từ tham số mẫu variadic
Có cách nào tôi có thể khai báo một lớp có thành viên dữ liệu phụ thuộc vào các tham số mẫu của vectơ để tôi có thể truy cập vào từng tham số không? hoặc một số cách khác để đạt được những gì tôi muốn?
Điều này xuất hiện trong một chương trình thực sự mà tôi đã giải quyết một cách hoàn toàn khác nhưng bây giờ tôi quan tâm đến vấn đề trừu tượng hơn về cách tôi có thể làm điều này.
template <typename... Types> class Data
{
// Declare a variable of each type in the parameter pack
// This is NOT valid C++ and won't compile...
Types... items;
};
struct Item1
{
int a;
};
struct Item2
{
float x, y, z;
};
struct Item3
{
std::string name;
}
int main()
{
Data<Item1, Item2> data1;
Data<Item3> data2;
}
Đáng ngạc nhiên là đủ, điều này không xuất hiện như một bản sao. – MSalters