std vector push_back':2个重载没有'this'指针错误的合法转换

时间:2016-04-15 15:23:02

标签: c++ qt vector stl

我有这个qt应用程序,在头文件中我有

class report_intro: public QWizardPage
{
    Q_OBJECT

public:
    report_intro(QWidget *parent = 0);
    ~report_intro(void);
    int nextId() const;
private:
    Ui::Rep_Wiz_Intro ui; 
    QWidget *pWnd;
    std::vector<int> m_vTests;
    int m_iNumTest; 
};

在Cpp文件中我有

int report_intro::nextId() const
{   
    int i;
    // check to see which check box was checked 
    for (i=1; i<m_iNumTest; i++)
    {
        QString str = QString("checkBox_T%1").arg(i);
        if ((ui.groupBox_tests->findChild<QCheckBox *>(str))->isChecked())
            m_vTests.push_back(i); // **** here is the error****
    }
        return newreport::report_page; 
}

我收到了这个错误:

error C2663: 'std::vector<_Ty>::push_back' : 2 overloads have no legal conversion for 'this' pointer

感谢您的帮助......

1 个答案:

答案 0 :(得分:7)

int report_intro::nextId() const被标记为const。该说明者承诺你不会改变班级的州/成员。

当你改变m_vTests.push_back(i);时,

m_vTests违反了这一点。

您需要从函数中删除const说明符或将m_vTests声明为mutable,以便可以在const函数中对其进行修改。