我写了这样的事情:引用传递[C++],[Qt的]
class Storage
{
public:
Storage();
QString key() const;
int value() const;
void add_item(QString&,int);
private:
QMap<QString,int>* my_map_;
};
void Storage::add_item(QString& key,int value)//------HERE IS THE SLOT FOR ADDING
{
*my_map_[key] = value;
}
,当我试图通过给项目添加到QMap
:
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget* = 0);
public slots:
void add_item()
{
strg_->add_item(ui->lineEdit->text(),ui->spinBox->value());//---HERE I'M "PASSING" TWO OBJECTS: QString AND int
ui->lineEdit->clear();
}
private:
Ui::Dialog* ui;
Storage* strg_;
};
我越来越错误:
error: no matching function for call to 'Storage::add_item(QString, int)
note: candidates are: void Storage::add_item(QString&, int)
我该如何发送QString
参考。那么我现在呢? 谢谢。
你能解释一下为什么? – Rudy 2012-03-01 03:46:16
@Rudy:因为没有理由'add_item'希望修改'QString'对象。 – Mehrdad 2012-03-01 03:52:52