【问题标题】:Pointer to QVector of pointers指向 QVector 的指针
【发布时间】: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 的指针,在需要时使用方法上的引用。

标签: qt pointers qvector


【解决方案1】:

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

void FastViveLoop::solveTriggers()
{
    for(auto item : (*trigger))
    {
        bool on, off;
        on = checkOn(item);        
    }
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2011-08-04
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多