可以使用可变参数模板来实现接受未知数量和类型的参数的构造函数。以下是一个例子:
#include
#include
class MyClass {
public:
template
MyClass(Args... args) {
setValues(args...);
}
void setValues() {}
template
void setValues(T value, Args... args) {
values.push_back(value);
setValues(args...);
}
void printValues() {
for (auto value : values) {
std::cout << value << " ";
}
std::cout << std::endl;
}
private:
std::vector values;
};
int main() {
MyClass obj1("Hello", 123, 3.14, 'a');
obj1.printValues();
MyClass obj2("Hi", 456, true, "world");
obj2.printValues();
return 0;
}
在这个示例中,我们使用模板参数包和可变参数模板来实现接受不同类型的未知数量变量的构造函数。在类的构造函数中,我们通过调用setValues函数来将每个传递进来的参数添加到values向量中。最终,我们可以使用printValues函数来输出所有值。
该程序输出如下:
Hello 123 3.14 a
Hi 456 true world