私はintベクトルデータメンバを持つクラスを持っています。ベクトルを26個の要素に初期化し、すべてコンストラクタで-99という値を使用します。私はコンストラクタ内の要素0を取り除くことができ、 "-99"を出力します。その後、コンストラクタはベクトルを変更しない別のメンバ関数を呼び出しますが、その関数から要素0を取り除こうとするとセグメント化エラーが発生します。以下では、ヘッダーの関連部分と2つのメンバー関数のスクリーンショットを掲載しました。具体的には、コードは投稿されたものとして動作しますが、私が26行目を46行目に移動すると、segフォルトが発生します。参考になりましたか?ありがとうございました!ベクトルを出力するときにC++のseg faultが発生するメンバ関数からの要素
ヘッダファイル:
class Seq
{
private:
vector<int> assignments;
string original;
vector<Expression> sequence;
bool valid;
public:
void print_assignments();
Seq();
Seq(const string& s);
void parse(const string s, int);
vector<Expression> get_sequence();
void display_sequence();
void evaluate();
Constructiorとメンバ関数(解析)がコール。最初のcout文を移動すると、2番目のcout文の下の行でフォルトが発生します。
Seq::Seq(const string& s)
{
original = s;
vector<int> assignments(26, -99);
parse(s, s.size());
cout << assignments[0] << endl;
}
void Seq::parse(const string s, int length)
{
Expression e;
string temp1, temp2;
int i = 0;
while((s[i] != ';')&&(i < length))
{
i++;
}
if(i>0)
{
temp1 = s.substr(0, i);
e.set(temp1);
sequence.push_back(e);
if(sequence.back().get_type() == 0)
{
cout << sequence.back().get_token(0).get_token()[0] << endl;
}
}
ではなく、外部リンクで、**質問に*特に*ない画像をコード**を投稿してください。 – tadman
さて、私はそれを修正しようとします –
^----すべてのコードやいくつかのスニペットではありませんが、[mcve]してください! –