j*****k 发帖数: 1198 | 1 c++里怎么实现variable length arguments with type check?
These arguments can be different types and in different order.
Thanks. |
x****u 发帖数: 44466 | 2 你这个type check的规则是什么?
【在 j*****k 的大作中提到】 : c++里怎么实现variable length arguments with type check? : These arguments can be different types and in different order. : Thanks.
|
j*****k 发帖数: 1198 | 3 就是说如果一个参数要的是float, 在函数里得保证它是float才行。
参数的顺序必须是可变的。
【在 x****u 的大作中提到】 : 你这个type check的规则是什么?
|
X****r 发帖数: 3557 | 4 Generally, impossible.
Possible if limitations are posed, or alternative forms are allowed.
【在 j*****k 的大作中提到】 : c++里怎么实现variable length arguments with type check? : These arguments can be different types and in different order. : Thanks.
|
x****u 发帖数: 44466 | 5 参数可变就是说不知道参数个数和类型,你什么场合出现float呢?
【在 j*****k 的大作中提到】 : 就是说如果一个参数要的是float, 在函数里得保证它是float才行。 : 参数的顺序必须是可变的。
|
E*V 发帖数: 17544 | 6 一般不是类似
main(argc, **argv)这样的都作为string
或者c测
func(int a ...)
这样的必须类型一样
当然还有
printf("%s", ...)
这样的
【在 x****u 的大作中提到】 : 参数可变就是说不知道参数个数和类型,你什么场合出现float呢?
|
x****u 发帖数: 44466 | 7 这个在C++里面搞个对象容器的引用不就行了吗?
【在 E*V 的大作中提到】 : 一般不是类似 : main(argc, **argv)这样的都作为string : 或者c测 : func(int a ...) : 这样的必须类型一样 : 当然还有 : printf("%s", ...) : 这样的
|
E*V 发帖数: 17544 | 8 那就C#
main(CString^ arg)
【在 x****u 的大作中提到】 : 这个在C++里面搞个对象容器的引用不就行了吗?
|
x****u 发帖数: 44466 | 9 现在可以managed C++了。。。
【在 E*V 的大作中提到】 : 那就C# : main(CString^ arg)
|
j*****k 发帖数: 1198 | 10 在调用函数的时候,会给可变长度,可变顺序,和类型的参数。
在这一堆参数里,我会找所需要的参数,而且查看
该参数是不是我所需要的类型。
看了一下stdarg, 不满足我的要求,好象可以用boost来作。我想知道
能不能只用c++ 加上stl来作。
【在 x****u 的大作中提到】 : 参数可变就是说不知道参数个数和类型,你什么场合出现float呢?
|
|
|
x****u 发帖数: 44466 | 11 你参考一下COM的variant类型。
【在 j*****k 的大作中提到】 : 在调用函数的时候,会给可变长度,可变顺序,和类型的参数。 : 在这一堆参数里,我会找所需要的参数,而且查看 : 该参数是不是我所需要的类型。 : 看了一下stdarg, 不满足我的要求,好象可以用boost来作。我想知道 : 能不能只用c++ 加上stl来作。
|
t****t 发帖数: 6806 | 12 你这个要求不明确. 一个参数要的是float, 你怎么提出这个要求呢?
比如说printf family, 是printf("%f", x), 那么x应该是一个double, 这个"x是
double"的要求是作为第一个参数提出来的.
所谓type check, 是指在编译时就有这样的保证. 刚才我举的例子就没有这样的保证,
而且用第一个参数作出的要求也不可能在编译时就得到这样的保证.
【在 j*****k 的大作中提到】 : 就是说如果一个参数要的是float, 在函数里得保证它是float才行。 : 参数的顺序必须是可变的。
|
P********e 发帖数: 2610 | 13 google Functions with Variable Argument Lists
用va_list,肯定可以
【在 j*****k 的大作中提到】 : 在调用函数的时候,会给可变长度,可变顺序,和类型的参数。 : 在这一堆参数里,我会找所需要的参数,而且查看 : 该参数是不是我所需要的类型。 : 看了一下stdarg, 不满足我的要求,好象可以用boost来作。我想知道 : 能不能只用c++ 加上stl来作。
|
l******e 发帖数: 12192 | 14 简单点就用boost::any吧
【在 j*****k 的大作中提到】 : c++里怎么实现variable length arguments with type check? : These arguments can be different types and in different order. : Thanks.
|
j*****k 发帖数: 1198 | 15 不想用any, 嗯。
我想试试wrapper + map
【在 l******e 的大作中提到】 : 简单点就用boost::any吧
|
j*****k 发帖数: 1198 | 16 不满足我的要求。
【在 P********e 的大作中提到】 : google Functions with Variable Argument Lists : 用va_list,肯定可以
|
P********e 发帖数: 2610 | 17 那点?
type check?
【在 j*****k 的大作中提到】 : 不满足我的要求。
|