' - >'的基本操作数具有非指针类型' QStandardItemModel'

时间:2017-02-13 11:38:30

标签: c++ qt pointers qstandarditemmodel

关于我对指针的理解,我不是百分之百。

我有一些代码会给我以下错误:

  

' - >'的基本操作数有非指针类型' QStandardItemModel'

以下是相关代码:

stocklist.h

class StockList
{
public:
    void populateStockModel();
private:
    QStandardItemModel m_stockModel;
};

stocklist.cpp

void StockList::populateStockModel() {
    foreach(Item* item, m_items) {
        QList<QStandardItem*> newRow;

        QStandardItem* stockID = new QStandardItem(QString("%1").arg(item->stockID()));
        QStandardItem* desc = new QStandardItem(QString("%1").arg(item->stockID()));
        QStandardItem* price = new QStandardItem(QString("%1").arg(item->stockID()));

        newRow.append(stockID);
        newRow.append(desc);
        newRow.append(price);

        m_stockModel->appendRow(newRow);
    }
}

错误是指包含m_stockModel->appendRow(newRow);的行。

知道如何解决这个问题吗?我基本上试图使用这些项目值来填充模型。

帮助会非常感激!谢谢!

2 个答案:

答案 0 :(得分:4)

可以看到 - m_stockModelQStandardItemModel,而且没有operator->()

您可能打算写m_stockModel.appendRow(),或将m_stockModel声明为指向QStandardItemModel的指针。没有完整的例子,很难确定哪一个。

您可能也希望提高异常安全性 - 如果分配price失败,您将泄露stockIDdesc

答案 1 :(得分:1)

要将m_stockModel视为指针,您需要使用星号表示法声明它:

QStandardItemModel * m_stockModel;

在调用函数之前,您还需要使用m_stockModel运算符为new分配内存。

我建议学习pointers in C++

的基础知识