以下代码在我看来很好:
但是当我使用VC9编译时,出现了以下错误。
我希望这段代码可以编译。我是否遗漏了什么?有人知道如何解决这种奇怪的行为吗(请注意,没有模板的完全相同的内容可以编译并输出3)。
请注意,删除模板不是一个选项,我制作了这个例子来重现我在需要数组类型包含模板的代码中遇到的问题。
谢谢
#include <stdio.h>
template <typename T>
struct A
{
static float m_kA[];
};
template <typename T>
float A<T>::m_kA[] = {1.0f, 2.0f, 3.0f};
int main()
{
printf("%d\n",
sizeof(A<unsigned int>::m_kA) /
sizeof(A<unsigned int>::m_kA[0]));
return 0;
}
但是当我使用VC9编译时,出现了以下错误。
error C2070: 'float []': illegal sizeof operand
我希望这段代码可以编译。我是否遗漏了什么?有人知道如何解决这种奇怪的行为吗(请注意,没有模板的完全相同的内容可以编译并输出3)。
请注意,删除模板不是一个选项,我制作了这个例子来重现我在需要数组类型包含模板的代码中遇到的问题。
谢谢
sizeof array / sizeof array[0]
是一种常见的用语,用于计算数组的长度。你认为它计算的是什么,或者你认为其他人认为它计算的是什么? - user743382