对于一个类,我必须解决这个简单的问题,我需要在使用指针时检查多种类型变量的大小并将其全部显示出来。 我希望我的代码看起来像posible一样干净。所以我想知道是否有更清洁的东西。我现在有这个代码。
void size (float *p1, int *p2, int*p3, int *p4, double *p5,bool *pc){
for(int i=1; i <=5; i++){
cout << "Size of pointer " << i << " is:" << sizeof(p::i)<< endl;
}
cout << "Size of control pointer is:" << sizeof(pc)<< endl;
}
有没有办法以某种方式这样做,还是我必须逐行明确地写?
答案 0 :(得分:1)
您可以使用模板参数包来执行此操作,但目前尚不清楚这是您遇到的任何问题的最佳选择。
4
8
10
输出结果(在我的机器上):
{{1}}
答案 1 :(得分:0)
如果您的目标是自动打印某些功能参数的大小,您可以编写类似
的内容template< typename T, typename... V >
void print_size_of_args( T(*f)(V...) )
{(( std::cout << "size of arg[" << typeid(V).name() << "] is " << sizeof(V) << std::endl ), ... );}
void fun(float *p1, int *p2, int*p3, int *p4, double *p5,bool *pc)
{
print_size_of_args(fun);
// ...
}
这是c ++ 17,因为它适用于非重载的非成员函数;如果有必要,可以做得更一般......