非静态数据成员的使用无效
Invalid use of non static data member
class matrix
{
public:
int m;
int n;
int mat[m][n];
};
我收到此错误:
[错误]:无效使用非静态数据成员"矩阵::n">
声明静态时:
class matrix
{
public:
static int m;
static int n;
int mat[m][n]; //Error
};
我收到此错误:
[错误]:数组绑定不是 ']' 标记
之前的整数常量 请告诉我这些错误的含义以及如何解决此问题。
C++数组的大小必须是编译时可评估的。
编译器不知道如何处理int mat[m][n];
,因为在编译时不知道m
和n
的值。
如果你想要一个好的可靠矩阵类,那么请考虑在 Boost 中使用 BLAS 库。std::vector<std::vector<int>>
可以工作,但它是一个锯齿状边缘矩阵,内存模型相当差。
问题是,当你声明mat
成员变量时,m
和n
实际上并不存在。在创建 matrix
类的实例之前,它们不存在。但是,这不会有多大好处,因为C++中的数组在编译时必须具有固定的大小。
如果要在运行时设置mat
的大小,那么此处的简单解决方案是使用std::vector
对象的std::vector
。
比如
std::vector<std::vector<int>> mat;
相关文章:
- C++无效使用非静态成员函数?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 在 stream_descriptor::async_wait 中无效使用非静态成员函数
- 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?
- thread_local静态类在程序退出时在无效地址处销毁
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 使用 vector.sort() 的非静态成员函数无效使用
- 无效使用非静态成员函数 c++ 线程 linux
- 无效使用非静态成员函数 int test::funcAB(int, int)
- '在使用安卓 NDK r10e 构建静态库时无效使用'auto'
- 当使用嵌套类功能时,使用非静态数据成员的使用无效,但是当函数未固定时可以
- 错误:在 C++ 中无效使用非静态成员函数
- 在静态成员函数中无效使用成员“xx::x”
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 使用矢量指标对非静态数据成员的使用无效
- 非静态数据成员错误的使用无效
- 地址清理器在静态强制转换无效指针时报告错误
- 错误:非静态类数据成员的使用无效
- C++ 线程函数指针实现返回错误无效使用非静态成员函数