检测到*** glibc *** free():使用向量push_back()的无效指针

时间:2012-11-29 22:02:29

标签: c++ vector free glibc

我知道这个错误已经发布了很多,但我无法弄清楚如何解决我的问题。 我需要做的是逐行读取文件,使用这些行创建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 个答案:

没有答案