在下面的 C++ 代码中,模板化的 Check 函数给出的输出不是我想要的:它是 1 而不是 3。我怀疑 K 被映射到int*
,而不是int[3]
(这是一种类型吗?)。我希望它给我与第二个(非模板化)函数相同的输出,我明确给出了数组的大小......
没有使用宏,有没有办法编写一个接受单个参数但仍然知道数组大小的 Check 函数?
#include <iostream>
using namespace std;
int data[] = {1,2,3};
template <class K>
void Check(K data) {
cout << "Deduced size: " << sizeof(data)/sizeof(int) << endl;
}
void Check(int*, int sizeofData) {
cout << "Correct size: " << sizeofData/sizeof(int) << endl;
}
int main() {
Check(data);
Check(data, sizeof(data));
}
谢谢。
PS:在实际代码中,数组是一个结构数组,必须对其进行迭代以进行单元测试。