关于sizeof 的问题
FMD 2001-06-25 11:18:00 在一个使用了模板的基类中针对数组成员调用sizeof,无法通过
如何解决?
template <class T>
class CMarcoValueToString
{
public:
LPCTSTR GetMacroString(T value);
typedef struct valueandstring
{
T value;
LPCTSTR name;
}SValueAndString;
protected:
static SValueAndString m_marcos[]; //静态数组,派生类中将初始化并填充
//派生类是这样定义的:class CInternetStatusMacro:public CMarcoValueToString<DWORD>
};
template <class T>
LPCTSTR CMarcoValueToString<T>::GetMacroString(T value)
{
int size=sizeof(m_marcos);/sizeof(SValueAndString) ; //第一个sizeof无法编译通过
//error C2070: illegal sizeof operand
for(int i=0;i<size;i++)
{
if(value==m_marcos[i].value)
return m_marcos[i].name;
}
return NULL;
}
在派生类中,模板类型T被指定为DWORD ,按理SValueAndString的大小已经确定了,为何无法使用Sizeof
望指点。