2D矢量指针作为类的成员

时间:2017-04-04 07:31:15

标签: c++ class pointers vector

我是c ++的新手。 我正在尝试创建一个由2d向量指针组成的类。我正在创建一个以2D向量作为参数的对象。我试图使用指针引用这个2D矢量。这个编译得很好,但我在执行时遇到了分段错误。 我在这里附上我的代码。请帮忙!

# include <iostream>
# include <vector>
using namespace std;

class Vectorref {
        vector<vector<float> >  *vptr; // pointer to 2D vector

    public:
        Vectorref(vector<vector<float> >);
        double getval(int,int);
};

Vectorref::Vectorref(vector<vector<float> > v)
{
    vptr = &v;
}

double Vectorref::getval(int r, int c)
{
    return (*vptr)[r][c];
}

int main(){
    vector<vector<float> > A (3,vector<float>(3,2.0));

    Vectorref B(A);

    for(int i=0; i<3 ;i++){
        for(int j=0; j<3; j++){
            cout << B.getval(i,j) << "\t";
        }
        cout << endl;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您应该将v作为参考而不是复制。

Vectorref(vector<vector<float> >&);
Vectorref::Vectorref(vector<vector<float> >& v)

必须确保你的vector<vector<float>>Vectorref更长,否则你会再次出现细分错误。

您的getval函数应该返回float而不是double