我希望将以下方法作为任何数组的通用方法,
int arrayLength(`anyType` array[])
{
return sizeof(array) / sizeof(array[0]);
}
然而,C++ 似乎根本不允许任何类型的歧义,
这是为什么,我应该如何解决它?
最佳答案
因为类型必须被压入堆栈然后弹出,并且一种类型的 sizeof
不等于另一种类型的 sizeof
。
如果在函数之间在堆栈上传递的类型的大小不是固定的或事先不知道的,编译器如何编译函数?
这个问题的解决方案 - 正如其他人所指出的 - 是模板和宏,它们都动态生成代码 - 然后在编译时依次编译,看起来“解决“问题”,但实际上只是通过将工作转移到编译器上来避免或分散您的注意力。
关于c++ - 为什么 C++ 禁止声明无类型的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978788/