【问题标题】:How to use an attribute of a class to create a fixed size array?如何使用类的属性创建固定大小的数组?
【发布时间】:2021-10-26 17:32:52
【问题描述】:

我有一个包含两个属性的类:一个 int 和一个固定大小的数组。我怎样才能做到这一点,以便我可以使用 int 来修复我的数组的大小?

我试过这种方法,但我似乎无法让它工作:

#include "tile.h"

class board {
private:
    const static int m_RADIUS;
    static tile[2 * m_RADIUS - 1][2 * m_RADIUS - 1];
};

【问题讨论】:

  • 你怎么知道m_RADIUS的值应该是多少?
  • 您可以使用模板。我不知道任何其他方式(除了使用动态内存),但这似乎不是你所追求的

标签: c++ arrays class


【解决方案1】:

所有数组变量的大小必须是编译时常量。静态 const 变量只有在使用编译时常量初始化器定义后才是编译时常量表达式。

你不能在类定义中给一个非内联静态成员变量一个初始化器,但是如果你使用一个内联变量你可以给一个初始化器。您还必须为成员数组命名。示例:

inline const static int m_RADIUS = 42;
static tile array[2 * m_RADIUS - 1][2 * m_RADIUS - 1];

【讨论】:

  • 另外,您可以将const 替换为constexpr 以强制成员为编译时间常数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
相关资源
最近更新 更多