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

我不喜欢你将 QVector 存储为指针, 这不是应该如何使用这个类。 但既然你是,有一个简单的方法来解决你的问题。

void FastViveLoop::solveTriggers()

    for(auto item : (*trigger))
    
        bool on, off;
        on = checkOn(item);        
    

将基于范围的 for 用于 QVector 的值。

【讨论】:

以上是关于指向 QVector 的指针的主要内容,如果未能解决你的问题,请参考以下文章

修改作为指针传递的 QVector 的 QVector

Qt6STL-QVector循环删除指针浅谈

QVector::remove(int i, int count) 从第一个删除时的性能

指针和 QVector 问题

QVector内存泄漏?

内存对齐 QVector().data()