2017-02-13 76 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++的基本知識

相關問題