声明和访问在构造函数c++中启动的2D-vector
Declare and access 2D-vector initiated in constructor c++
我在头文件中声明了一个类,其中我有以下2D向量:
std::vector< std::vector<int> > inputPatterns;
然后,在.cpp文件中该类的构造函数中,我执行以下操作:
nInputPatterns = 4;
vector< vector<int> > inputPatterns(nInputPatterns, vector<int>(2));
inputPatterns[0][0] = 1;
inputPatterns[0][1] = 1;
inputPatterns[1][0] = 0;
inputPatterns[1][1] = 1;
inputPatterns[2][0] = 1;
inputPatterns[2][1] = 0;
inputPatterns[3][0] = 0;
inputPatterns[3][1] = 0;
但是,现在该类的成员函数不能访问这个2D向量。我认为这是因为我在构造函数中重新声明了它,但我不知道该怎么做。
所以我的问题是,如何在头类中正确声明2D矢量,然后在。cpp文件中初始化它(无论是在构造函数还是成员函数中),这样我就可以在任何地方访问它?
您正在声明一个新的局部变量,并填充它,然后一旦控件超出构造函数作用域就会死亡。因此,您实际上并没有填充对象的成员变量,而是填充了另一个变量,该变量在构造函数完成执行时失效。
您需要做的是使用类的现有成员变量,而改进代码并使其更具可读性/可理解性的最佳方法是使用this
指针,如下所示:nInputPatterns = 4;
// means not any inputPatterns, it is explicitly the member variable inputPatterns of "this" current object / instance
this->inputPatterns(nInputPatterns, vector<int>(2));
// ..
我的问题的答案似乎是使用inputPatterns。分配(nInputPatterns向量(2));不是这个->。有人能告诉我为什么吗?
相关文章:
- 如何默认启动 std::vector
- C++中的多维数据集:从 std::vector 的 2D 数据到 std::vector 的 2D 网格的最干净方法?
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 如何在多个文件中声明全局 std::vector 2d 数组?C++
- 将 std::set 分配给 2D std::vector of ints
- Bool Vector 2D数组在IF条件下使用
- C++,2D std::vector,我是否需要显式保留和推送空矢量
- C++ 在 2D std::vector 中查找最大值的位置
- 在Cuda中启动2d线程块时崩溃
- 如何使用std::vector将值推回到2D数组的行的中间
- 尝试在<int>构造函数中使用 vector 启动类时出错
- 有没有办法将"std::vector 2d"作为指向函数的"2d c 数组"的指针传递
- 在 Win32 API 中启动 2D 游戏项目
- 在c++中推回基类类型2d vector中的子类对象
- 2D vector push_back
- 声明和访问在构造函数c++中启动的2D-vector
- 用默认值在Struct中实例化2D Vector
- 在"2d-vector"内创建矢量大小的矢量(矢量<矢量<> >)?
- std::sort for a 2D vector in c++