如何声明一个对象以用于此函数

时间:2015-06-26 13:19:20

标签: c++ qt

我有一个声明为:

的函数
bool getIndex(const QString itemUid, QModelIndex& index /*out*/);

如何声明一个对象作为索引传入?

我试过了:

QModelIndex *modelIndex;
getIndex(auid, modelIndex  );

有和没有“*”,但我得到编译错误。

编译错误是:

  

没有匹配函数来调用TreeModel :: getIndex(QString,QModelIndex *&)

2 个答案:

答案 0 :(得分:1)

编译没有*不应该给你错误(假设你没有做QModelIndex *modelIndex();之类的事情。)

解决问题的另一种方法是声明你的函数:

bool getIndex(const QString itemUid, QModelIndex* index /*out*/);

然后像以前一样创建对象作为参考:

QModelIndex *modelIndex;
getIndex(auid, modelIndex);

这方面的缺点是你必须在使用index的任何地方更改函数,而不是将其视为指针而不是引用。 我发现您的错误更可能出现在代码的其他位置,并且是QModelIndex对象的性质。

答案 1 :(得分:-3)

请求的参数为QModelIndex&,因此您只需拨打

即可
QModelIndex modelIndex();
getIndex(auid, modelIndex);

Btw:QModelIndex是一个非常苗条的对象,很快就会失效。如果没有深入了解Qt的模型/视图系统,就不应该创建指针。