错误:函数不是“类”的静态数据成员 - C++
ERROR: Function is not a static data member of “Class” - C++
如果这个问题已经在某处得到回答,我感到非常抱歉,但经过几个小时的搜索,我找不到或理解任何东西。
作为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'}
};
};
在这两种情况下,我都鼓励您更改可见性
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 静态数据成员模板专用化的实例化点在哪里
- 调用在 HXX 文件中声明的静态数据成员
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- 何时需要定义类的静态数据成员 (un/-)
- 为什么静态数据成员不能在c++11中的类中初始化
- 静态数据成员的模板专用化
- 拒绝包含某些公共静态数据成员的类型
- GCC:在调试构建中优化的静态数据成员
- 类模板静态数据成员定义/声明/初始化
- C++ 中的静态数据成员
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 使用 lambda 函数初始化静态数据成员
- 引用静态数据成员
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(使用 link.exe 和 lld-
- 为什么不能使用"( )"为类的非静态数据成员提供默认值?
- 不带初始值设定项的 constexpr 静态数据成员