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

Base operand of '->' has non-pointer type 'QStandardItemModel'

本文关键字:类型 QStandardItemModel 指针 gt 操作数      更新时间:2023-10-16

我对指针的理解不是 100% 的

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

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

以下是相关代码:

库存清单.h

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

库存清单.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); 的行。

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

帮助将不胜感激! 谢谢!

它就在那里看到 - m_stockModel是一个QStandardItemModel,它没有operator->()

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

您可能还想提高异常安全性 - 如果分配price失败,您将泄漏stockIDdesc

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

QStandardItemModel * m_stockModel;

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

我建议在C++中学习指针的基础知识