为什么本地类中的字段不能是静态的?
|
void foo (int x)
{
struct A { static const int d = 0; }; // error
}
除了标准的参考文献之外,这背后是否有任何动机禁止内部类内部的“ 1”场?
error: field `foo(int)::A::d\' in local class cannot be static
编辑:但是,允许使用“ 1”个成员函数。对于这种情况,我有一个用例。假设我只想为POD调用foo()
,那么我可以像这样实现它,
template<typename T>
void foo (T x)
{
struct A { static const T d = 0; }; // many compilers allow double, float etc.
}
foo()
应该仅用于POD(如果允许static
),而不能传递给其他数据类型。这只是我想到的一个用例。
没有找到相关结果
已邀请:
5 个回复
骂陋冠
foo.cpp
现在,由于void foo(int x)内的作用域不是全局的,因此没有定义静态成员的作用域。希望这一点更加清楚。
瓜唱鬼
这为您提供了完全相同的功能,但代价是 使用函数语法来访问它。
玩翁文醚碱
凸晴
对于链接器来说不是一个好名字,因此如何找到静态成员的定义?如果函数baz()中还有另一个struct A,该怎么办?
疼嘶桐