如何优化此代码?(QT5)

How can I optimize this code? (Qt5)

本文关键字:QT5 代码 优化 何优化      更新时间:2023-10-16

我编写了此代码示例,发现它肯定看起来不好,但是我很难优化它。也许有人可以帮助我。QT5。

int MainWindow::readVariable(QVector<double> &value, QVector<double> &time, QString type, QFile *f)
{
    int buffer_size = 0;
    quint64 read_bytes = 0;
    while (1) 
    {
        if (type == "u_int32_t")
        {
            buffer_size = sizeof(unsigned);
            unsigned dest = 0;
            read_bytes = f->read(reinterpret_cast<char*>(&dest), buffer_size);
            value.append(dest);
             break; 
        }
        if (type == "int32_t")
        {
            buffer_size = sizeof(int32_t);
            int32_t dest = 0;
            read_bytes = f->read(reinterpret_cast<char*>(&dest), buffer_size);
            value.append(dest);
            break;
        }
        /* ... and so on for many-many variable types */
    }
}

" type"值我从XML文件中读取。

可能是使用

之类的模板的想法
template< typename T >
void readVariable( QVector<double>& value, QVector<double>& time, QFile* f)
{
  int buffer_size = 0;
  quint64 read_bytes = 0;
  buffer_size = sizeof( T );
  T dest = 0;
  read_bytes = f->read( reinterpret_cast<char*>(&dest), buffer_size );
  value.append(dest);
}

您可以像这样使用

QVector<double> v;
QVector<double> t;
QFile* f = nullptr;
readVariable<int>( v, t, f );

其中 int 是类型

您可以使用多态性而不是使用多态性并减少重复的代码。