在类定义中定义静态常量整数成员:探索
C 允许在类定义中声明静态常量整数成员。然而,理解这种情况下初始化和定义之间的区别至关重要。
在提供的示例代码中:
class test { public: static const int N = 10; };
类中 N 的声明将其初始化为值10. 然而,这并不等同于定义。要解决遇到的链接器错误,需要在类定义之外单独定义 N。这可以通过命名空间范围定义来实现,例如:
const int test::N = 10;
或者,constexpr 关键字可用于在一个步骤中声明和定义静态 const 整数成员,从而无需单独的定义:
class test { public: static constexpr int N = 10; };
在调用 std::min 的情况下,它期望通过引用传递参数。由于 N 被声明为静态常量整数,因此需要对其进行定义以通过引用要求。注释掉对 std::min 的调用允许代码编译,因为不再需要 N 的定义,尽管它仍然被引用。
总而言之,而 C 允许在内部初始化静态 const 整数成员类定义中,需要单独的定义来引用该值。这可以通过命名空间范围定义或使用 constexpr 关键字来实现。
以上是如何在 C 中正确定义静态常量整数类成员?的详细内容。更多信息请关注PHP中文网其他相关文章!