'->' 的基本操作数具有非指针类型 '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_stockModel
是 QStandardItemModel
,它没有 operator->()
。
您可能打算写 m_stockModel.appendRow()
,或者将 m_stockModel
声明为指向 QStandardItemModel
的指针。没有完整的例子,很难确定是哪个。
您可能也想改进您的 exception-safety - 如果分配 price
失败,您将泄漏 stockID
和 desc
。
要将 m_stockModel
视为指针,您需要使用星号表示法声明它:
QStandardItemModel * m_stockModel;
您还需要在调用函数之前使用 new
运算符为 m_stockModel
分配内存。
我建议学习 pointers in C++
的基础知识
我对指针的理解不是 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_stockModel
是 QStandardItemModel
,它没有 operator->()
。
您可能打算写 m_stockModel.appendRow()
,或者将 m_stockModel
声明为指向 QStandardItemModel
的指针。没有完整的例子,很难确定是哪个。
您可能也想改进您的 exception-safety - 如果分配 price
失败,您将泄漏 stockID
和 desc
。
要将 m_stockModel
视为指针,您需要使用星号表示法声明它:
QStandardItemModel * m_stockModel;
您还需要在调用函数之前使用 new
运算符为 m_stockModel
分配内存。
我建议学习 pointers in C++
的基础知识