【发布时间】:2020-05-24 18:02:32
【问题描述】:
我正在尝试找到设计类模板的方法,以便传递 int 值,并且几个函数签名以及参数列表都依赖于该值。
特别是考虑到MyClass:
template <int N>
class MyClass {
typedef SomeType<int, int, int, /* ... N times*/ > MyDepType;
myFunction(std::string arg0, std::string arg1, /* ...*/ std::string argN) { /* do stuff */};
public:
MyClass() {
someFunction(float arg0, float arg1, /* ...*/ float argN); // <
someOtherFunction(boost::bind(&MyClass::myFunction, this, _1, _2, /*...*/ _N));
};
};
我希望能够表达私有 typedef 调用、myFunction 的签名和传递给外部函数 someFunction 和 someOtherFunction 的参数列表,我无法编辑/重写。
有没有办法使用 C++11 标准来实现这一点?
【问题讨论】:
-
为什么不使用parameter pack?
-
或者 std::array
? -
@yaodav 似乎有帮助,我会调查一下; @kjpus 我考虑过,但是
someFunction和someOtherFunction分别接受每个参数,因为它们不是我的代码,所以不能更改它们的签名。 -
我认为我之前的回答完美地回答了你,除非你误解了什么。
-
我仍在尝试了解这些答案中的任何一个如何检查所有要求。这一次,他们都没有考虑如何将参数顺序传递给
boost::bind,这确实是我的主要问题。再说一次,我承认我对这种静态编程没有太多经验。
标签: c++ c++11 templates variadic