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

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

我对指针的理解不是 100% 达标。

我有一些代码出现以下错误:

base operand of '->' has non-pointer type '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); 的行。

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

帮助将不胜感激!谢谢!

就在那里看到 - m_stockModelQStandardItemModel,它没有 operator->()

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

您可能也想改进您的 exception-safety - 如果分配 price 失败,您将泄漏 stockIDdesc

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

QStandardItemModel * m_stockModel;

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

我建议学习 pointers in C++

的基础知识