【发布时间】:2020-11-19 05:44:39
【问题描述】:
我想知道如何访问包含指向对象的指针的列表元素。我想在不取消引用的情况下实现这一目标。如果我只是展示我想要的东西,可能会容易得多。所以我有清单:
list<ObjectClass*> nameOfObject;
我有方法:
bool collision(list<ObjectClass*>::iterator&);
我有该方法的内部定义:
{
if((*nameOfObject)->getSprite()) return true;
else return false;
}
我想要的是 getSprite 不需要取消引用 nameOfObject 内部方法,所以是这样的:
{
if((nameOfObject)->getSprite()) return true;
else return false;
}
我尝试的一切都不起作用。我以为这很容易,但我真的不明白。有任何想法吗?我将添加该列表必须包含指向对象的指针,因为 polimorphysm。
【问题讨论】:
-
为什么要避免取消引用?您有一个指针,您必须以一种或另一种方式取消引用它才能访问包含的方法/属性。
-
bool collision(list<ObjectClass*>::iterator&);对我来说没有意义。您应该使用ObjectClass*(或ObjectClass&)或一对迭代器(不应限于std::list,但这是另一回事)... -
@yeputons 我想在这里使用模板,这是我在列表中有指针的唯一情况,所以我的函数体不同
-
@appleapple 你能写更多细节吗?可能我以愚蠢的方式完成了它,让它变得更好会很棒;)
-
如果列表只包含非空指针,
std::ref可能比指针en.cppreference.com/w/cpp/utility/functional/reference_wrapper 工作得更好