【发布时间】:2017-04-27 14:42:31
【问题描述】:
我有一个指向 QVector 的指针。我需要传递“触发器”作为参考。
我在标题中有这个:
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是一个成员变量,为什么一开始就把它变成一个原始指针呢? -
因为我在其他一些类中有 QVector
,这只是为了对数据做一些工作。 -
trigger* ptr = (*vptr)[i]; fun(*ptr);,但这是一种可怕的设计,它规避了很多事情 - 我建议改用重组代码。 -
不要存储指向 QVector 的指针,在需要时使用方法上的引用。