C++为可变参数重载运算符逗号
是否可以通过重载参数的运算符逗号来构造函数的可变参数?我想看一个例子如何做到这一点......,也许是这样的:
template <typename T> class ArgList {
public:
ArgList(const T& a);
ArgList<T>& operator,(const T& a,const T& b);
}
//declaration
void myFunction(ArgList<int> list);
//in use:
myFunction(1,2,3,4);
//or maybe:
myFunction(ArgList<int>(1),2,3,4);
is it possible to construct variadic arguments for function by overloading operator comma of the argument? i want to see an example how to do so.., maybe something like this:
template <typename T> class ArgList {
public:
ArgList(const T& a);
ArgList<T>& operator,(const T& a,const T& b);
}
//declaration
void myFunction(ArgList<int> list);
//in use:
myFunction(1,2,3,4);
//or maybe:
myFunction(ArgList<int>(1),2,3,4);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是可能的,但用法看起来不太好。例如:
这个缺点将在 C++0x 中得到修复,您可以这样做:
或者甚至使用混合类型:
It is sort-of possible, but the usage won't look very nice. For exxample:
This shortcoming will be fixed in C++0x where you can do:
or even with mixed types:
运算符具有固定数量的参数。你无法改变这一点。逗号运算符有两个参数。所以不。不过,您可以通过一些努力来推出自定义的级联版本。
Operators have a fixed number of parameters. You cannot change that. The comma operator takes two arguments. So no. You can roll a custom, cascading version though, with some effort.
也许是这样的:
用法是:
Maybe something like this:
Usage would be:
不,不是。由逗号运算符分隔的值列表将被视为单个值。例如:
将产生单个值 3。
No, it isn't. The list of values separated by the comma operator will be evaluated as a single value. For example:
will result in a single value, 3.