指向 QVector 的指针
Posted
技术标签:
【中文标题】指向 QVector 的指针【英文标题】:Pointer to QVector of pointers 【发布时间】:2017-04-27 14:42:31 【问题描述】:我有一个。我需要传递“触发器”作为参考。
我在标题中有这个:
public:
QVector<Trigger*>* triggers;
我必须在哪里输入什么??? are (triggers[i] is not ok):
void FastViveLoop::solveTriggers()
for(int i = 0; i < triggers->count(); ++i)
bool on, off;
on = checkOn(???);
bool FastViveLoop::checkOn(Trigger &trigger)
return false;
【问题讨论】:
既然triggers
是一个成员变量,为什么一开始就把它变成一个原始指针呢?
因为我在其他一些类中有 QVectortrigger* ptr = (*vptr)[i]; fun(*ptr);
,但这是一种可怕的设计,它规避了很多事情 - 我建议改用重组代码。
不要存储,在需要时使用方法上的引用。
【参考方案1】:
我不喜欢你将 QVector 存储为指针, 这不是应该如何使用这个类。 但既然你是,有一个简单的方法来解决你的问题。
void FastViveLoop::solveTriggers()
for(auto item : (*trigger))
bool on, off;
on = checkOn(item);
将基于范围的 for 用于 QVector 的值。
【讨论】:
以上是关于指向 QVector 的指针的主要内容,如果未能解决你的问题,请参考以下文章