错误:函数不是“类”的静态数据成员 - C++

ERROR: Function is not a static data member of “Class” - C++

本文关键字:静态 数据成员 C++ 函数 错误      更新时间:2023-10-16

如果这个问题已经在某处得到回答,我感到非常抱歉,但经过几个小时的搜索,我找不到或理解任何东西。

作为OOP的新手,我正在通过尝试创建一个类来锻炼自己,其中我预定义了一个二维字符矩阵。我不断收到以下错误:

错误:"char Matrix2d::keyss [4][4]">

不是"class Matrix2d"的静态数据成员 char Matrix2d::keyss [ROWS][COLS] =

我的标题如下:

const int ROWS = 4;
const int COLS = 4;
class Matrix2d
{
  public:
   char keys [ROWS][COLS];
  private:
};

我.cpp是这样的:

char Matrix2d::keys [ROWS][COLS] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

这是一个简单的代码,用于使用 arduino 键盘运行。

提前感谢您的任何帮助,并希望我提供了足够的信息,因为这是我第一次在这里发布。

如果类是这样定义的:

const int ROWS = 4;
const int COLS = 4;
class Matrix2d
{
  public:
   char keys [ROWS][COLS];
  private:
};

这意味着Matrix2d 实例的属性,但形式

char Matrix2d::keys [ROWS][COLS] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

定义并初始化类 Matrix2d 的属性,这是不兼容的


如果你想要类的属性(一个"静态"属性(,请

const int ROWS = 4;
const int COLS = 4;
class Matrix2d
{
  public:
     static char keys [ROWS][COLS];    
};
char Matrix2d::keys [ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

如果您想要具有该默认值的实例属性,请执行

class Matrix2d
{
  public:
     char keys [ROWS][COLS] = {
       {'1','2','3','A'},
       {'4','5','6','B'},
       {'7','8','9','C'},
       {'*','0','#','D'}
     };
};

在这两种情况下,我都鼓励您更改可见性