关于我对指针的理解,我不是百分之百。
我有一些代码会给我以下错误:
' - >'的基本操作数有非指针类型' 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);
的行。
知道如何解决这个问题吗?我基本上试图使用这些项目值来填充模型。
帮助会非常感激!谢谢!
答案 0 :(得分:4)
可以看到 - m_stockModel
是QStandardItemModel
,而且没有operator->()
。
您可能打算写m_stockModel.appendRow()
,或将m_stockModel
声明为指向QStandardItemModel
的指针。没有完整的例子,很难确定哪一个。
您可能也希望提高异常安全性 - 如果分配price
失败,您将泄露stockID
和desc
。
答案 1 :(得分:1)
要将m_stockModel
视为指针,您需要使用星号表示法声明它:
QStandardItemModel * m_stockModel;
在调用函数之前,您还需要使用m_stockModel
运算符为new
分配内存。
我建议学习pointers in C++
的基础知识