*** Обнаружен glibc *** free (): неверный указатель с использованием вектора push_back ()

Я знаю, что эта ошибка была опубликована много, но я просто не могу понять, как решить мою.
Что мне нужно сделать, это прочитать файл построчно, использовать эти строки для создания объектов типа Rule, которые я добавлю к вектору rulesSet.

Итак, вот обновленный код:

knowledgebase.h

class KnowledgeBase
{
private:
vector<Rule> rulesSet;
public:
KnowledgeBase(string fileName);
};

rule.h

class Rule
{
private:
int priority;
bool valid;
vector<Attribute> LHS;
vector<Attribute> RHS;
public:
Rule(string rule);
public:
bool isValid();
};

knowledgebase.cpp

KnowledgeBase::KnowledgeBase(string fileName)
{
ifstream file (fileName.c_str());

if (file.is_open())
{
string r = "rule";
for(string rule; getline( file, rule); )
{
Rule newRule(r);
if(newRule.isValid())
{
//this->rulesSet.push_back(newRule);

}
}
}
else {
cerr << "Could not open file! ";
}

}

rule.cpp

    Rule::Rule(string rule)
{

cout << rule << endl;
return;
}

bool Rule::isValid()
{
return this->valid;
}

Я уверен, что это как-то связано со строкой правило но я просто не могу найти способ обойти это. Любой совет приветствуется.
Спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]