我写了这个代码样本,发现它看起来肯定不好,但我努力尝试优化它。也许有人能帮我。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文件中读取的。
发布于 2014-01-28 17:07:41
使用模板可能是个好主意,比如
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是类型
发布于 2014-01-28 16:47:41
您可以使用多态性代替if,并减少重复的代码。
https://stackoverflow.com/questions/21400608
复制相似问题