2017-02-13 78 views
0

对于我对指针的理解,我不是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);的行。

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

帮助将不胜感激!谢谢!

回答

4

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

您可能打算编写​​或声明m_stockModel作为指向QStandardItemModel的指针。没有一个完整的例子,很难确定哪一个。

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

1

m_stockModel被视为一个指针,你将需要使用星号标记法将其声明为这样:

QStandardItemModel * m_stockModel; 

您还需要为m_stockModel使用new操作之前调用分配内存其功能。

我推荐学习pointers in C++的基本知识

相关问题