编辑:为什么我不能在const参数函数/方法中传递const对象?
对不起,我试图理解的代码示例,它使用QList::indexOf
方法,声明为here。
其实我想弄清楚,为什么我需要在这种特殊情况下使用const_cast
:
int ProjTreeItem::row() const
{
if (parentItem) {
// instance of const object to test
const ProjTreeItem *item = new ProjTreeItem(QList<QVariant>(), NULL);
// Called indexOf here to test
parentItem->childItems.indexOf(item);
// This works fine
return parentItem->childItems.indexOf(const_cast<ProjTreeItem*>(this));
}
return 0;
}
EDIT2:
我一直在寻找在错误的地方,然后我就开始怀疑这个问题与使用模板和const
修饰符有关。我发现这个线程here。请看Jon的回答,我认为这个答案阐明了我达成的观点。抱歉我的问题有误导性。
它应该工作正常。由于cbranch正确地指出了一个语法错误,并且你的发布代码没有错误,很明显你有一些真正的代码会给你带来问题。不要虚构虚假的代码,只要缩小你的问题并告诉我们,所以我们可以解决一个真正的问题,而不是一个假设的问题。 – GManNickG 2011-01-19 02:50:42
你看起来很奇怪,你调用一个看似静态的方法,但也声明它为`const`。你没有向我们展示一些东西.... – JaredC 2011-01-19 02:56:12