声明并访问在构造函数c ++中启动的2D向量

时间:2016-09-28 13:22:26

标签: c++ vector 2d

我在头文件中声明了一个类,其中我有以下2D向量:


    <string-array name="navigation_drawer_items_array">
        <item>Home</item>
        <item>My Collections</item>
        <item>Pending Collections</item>
        <item>Recive Cash</item>
        <item>New Registration </item>
        <item>Collection History</item>
        <item>Log Out</item>
    </string-array>

然后在我的.cpp文件中的这个类的构造函数中,我执行以下操作:

std::vector< std::vector<int> > inputPatterns;

但是,现在这个类的成员函数无法访问这个2D向量。我认为这是因为我在构造函数中重新声明了它,但我不知道该怎么做。

所以我的问题是,如何在头类中正确声明2D向量,然后在.cpp文件中(在构造函数或成员函数中)初始化它,以便我可以在任何地方访问它?

2 个答案:

答案 0 :(得分:1)

您正在声明一个新的局部变量,填充它,然后一旦控件退出构造函数范围就会死亡。因此,您实际上没有填充对象的成员变量,而是填充了在构造函数完成执行时死亡的其他变量。

您需要做的是使用类的现有成员变量,并且改进代码并使其更易读/可理解的最佳方法是使用this指针,如下所示:< / p>

nInputPatterns = 4;

// means not any inputPatterns, it is explicitly the member variable inputPatterns of "this" current object / instance
this->inputPatterns(nInputPatterns, vector<int>(2)); 

// ..

答案 1 :(得分:0)

我的问题的答案似乎是使用inputPatterns.assign(nInputPatterns,vector(2));所以不是这个 - &gt;。谁能解释我为什么?