' - >'的基本操作数具有非指针类型'QStandardItemModel'
问题描述:
对于我对指针的理解,我不是100%。' - >'的基本操作数具有非指针类型'QStandardItemModel'
我有一些代码,是给我下面的错误:
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_stockModel
是QStandardItemModel
,它没有operator->()
。
您可能打算编写或声明m_stockModel
作为指向QStandardItemModel
的指针。没有一个完整的例子,很难确定哪一个。
您可能还想提高您的例外安全性 - 如果分配price
失败,您将泄漏stockID
和desc
。
答
为m_stockModel
被视为一个指针,你将需要使用星号标记法将其声明为这样:
QStandardItemModel * m_stockModel;
您还需要为m_stockModel
使用new
操作之前调用分配内存其功能。
我推荐学习pointers in C++的基本知识