我对静态类成员的使用有问题
size
类的
SizeObj
,用作模板类的模板参数
SizeTemplate
事实上,下面的代码在MS VS2008之前运行良好,但现在编译失败了
error C2275: 'K' : illegal use of this type as an expression
error C2228: left of '.size' must have class/struct/union
需要指出的是,只有当
getSize
至少打过一次电话。
请不要询问下面代码的意义,正如我所说的,我将其简化为
最基本的解释。然而,我必须承认
由于以下几个原因,成员“size”的用法不是很优雅,也许
有很多更好的解决方案,但目前我别无选择
设置还是类似的?我还没有找到合适的。
在下面的帖子中,这很容易,因为类K的一个实例可用,但对于我的问题,我不知道如何正确获取该实例:
class SizeObj
{
public:
static const int size = 1;
};
template<class K>
class SizeTemplate
{
public:
int getSize();
};
template<class K>
int SizeTemplate<K>::getSize()
{
return K.size;
}
int main(...)
{
SizeTemplate<SizeObj> sizeObj;
printf("size:%d", sizeObj.getSize());
}
tangoal公司