私はC++を初めて使用しています。 2dベクトルポインタで構成されるクラスを作成しようとしています。私は引数として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;
}
'vptr =&v;' - 'v'は自動変数です。 a *渡された引数のコピー*コンストラクタがスコープを終了した瞬間に存在しなくなる自動変数のアドレスを保存しています。 – WhozCraig
@WhozCraigどうすればいいですか? – jennifer