C ++尝试访问基类中的受保护成员(读取访问冲突)

时间:2014-03-19 14:01:55

标签: c++ qt

我尝试调用一个方法,但它在尝试访问AbstractIpCalculator的QMap成员变量时崩溃。

我这样打电话:

AbstractIpCalculator *calculator = item_group.at(i).getCalculator();

calculator->setId(1, net_ids[1]);

ABSTRACTIPCALCULATOR_H:

#ifndef ABSTRACTIPCALCULATOR_H
#define ABSTRACTIPCALCULATOR_H

#include <QString>
#include <QDebug>
#include <QPair>
#include <QQueue>



class AbstractIpCalculator
{

public:
    AbstractIpCalculator();

    ...

    bool setId(int index, double value);

    virtual QString calculate(QString) = 0;


protected:
    QMap<int, double> park_netz_list;
    ...    

private:
    virtual QString calculateOctetOne(QString) = 0;
    virtual QString calculateOctetTwo(QString) = 0;
    virtual QString calculateOctetThree(QString) = 0;
    virtual QString calculateOctetFour(QString) = 0;
};

#endif // ABSTRACTIPCALCULATOR_H

方法setParkNetzId:

bool AbstractIpCalculator::setId(int index, double value)
{
    if(index >= 1)
    {
        qDebug() << index << value << " " << (&park_netz_list == nullptr);
        park_netz_list.insert(index, value); // <--- crash!!!
        return true;
    }

    return false;
}

有许多子类可以扩展AbstractIpCalculator。 *计算器是派生类,但此时我不知道哪个。

我的调试器说:读取访问冲突位于:0x0,标志= 0x0(第一次机会)并在qmap.h第73行停止。

我正在使用Qt 5.0.2。

提前谢谢!

编辑:

setCalculator或getCalculator方法可能有问题吗?

AbstractIpCalculator *CalculatorItemGroup::getCalculator() const
{
    return calculator_item;
}

void CalculatorItemGroup::setCalculator(AbstractIpCalculator &calculator_item)
{
    this->calculator_item = &calculator_item;
}

初​​始化:

CalculatorItemGroup item;
item..setCalculator(c);

0 个答案:

没有答案