【发布时间】:2022-12-21 10:14:36
【问题描述】:
我想在类中定义数组:
H:
class A
{
protected:
static const int TABLE[];
}
cpp:
const int A::TABLE[5] = {1, 2, 3, 4, 5};
这应该是一个 const 数组,所有类型 A 的对象都将使用。
-
我应该在头文件中定义它吗?这方面的最佳做法是什么?
-
我缝制了以前的问题,有些人建议用“外部”来定义它。像这样:
H:
class A { protected: extern const int TABLE[]; }cpp:
const int A::TABLE[5] = {1, 2, 3, 4, 5};它不是静态的?
..................................
【问题讨论】:
-
要么在一个源文件中定义它,要么在类内的标头中使用
inline。 -
首先,数组是
A的每个单独对象实例的单独成员,还是应该由A的所有对象实例共享?这决定了是否使用static。 -
“这个的最佳实践是什么......”基于意见。
-
如果您打算经常更改这些值,则只需重新编译 cpp 文件是一个优势。但是,如果这些值在编译时有用,则您需要在标头中使用它们。
-
不相关,我也建议
std::array<int, 5>而不是int[5]
标签: c++