【发布时间】:2016-12-07 22:59:31
【问题描述】:
我有一个带有 int 向量数据成员的类。我将向量初始化为 26 个元素,所有元素在构造函数中的值为 -99。我可以在构造函数中计算元素 0 并打印“-99”。然后构造函数调用另一个不修改向量的成员函数,但是当我尝试从该函数中计算元素 0 时,我得到了分段错误。下面我发布了标题相关部分和两个成员函数的屏幕截图。具体来说,代码按发布的方式工作,但如果我将第 26 行移至第 46 行,我会遇到段错误。有什么有用的建议吗?谢谢!
头文件:
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();
构造函数和它调用的成员函数(解析)。将第一个 cout 语句移动到第二个 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;
}
}
【问题讨论】:
-
请将代码发布在问题中,而不是在外部链接上,尤其是不是图片。
-
好的,我会努力解决的
-
^---- 不是所有的代码也不是任意的sn-p,而是minimal reproducible example拜托!
-
很抱歉这么苛刻,但是您对问题的关注越多,就会有更多的人愿意回答。你把你放进去的东西拿出来。
-
这是人们点击随机链接的最后一个网站
标签: c++ vector segmentation-fault