将不同类型的QList转换为QString的静态函数
Static function to convert QList of different types to QString
我有一个QList,其中包含字符串,int, double和日期值。我想将QList转换为QString并在QString返回函数中返回它。有一个静态函数,我可以使用或我错过了什么?我当前的代码:
QString Product::toString()
{
QStringList listString;
QString outString;
for(int i =0; i < size(); i++)
{
listString << at(i)->toString();
}
outString = listString.join("n");
return outString;
}
备注:
-
我假设
Product::at(int)
返回Transaction
,给定前面的问题。 -
我也假设OP的意思是"内置"当他或她写"静态"
for
可通过内置功能移除。不过,有些人(很多人?)会觉得新语法不太容易理解。
QString Product::toString()
{
QStringList aggregate;
std::transform(m_transactions.begin(),
m_transactions.end(),
std::back_inserter(aggregate),
std::bind(std::mem_fn(&Transactions::toString), std::placeholders::_1));
// or : [](const Transaction& transaction){ return transaction.toString(); });
return aggregate.join("n");
}
std::transform
将使用Transaction::toString()
转换每个m_transactions
元素,并将结果放入aggregate
。
std::back_inserter
表示"使用QStringList::push_bask
记录结果"。如果QStringList
像QVector
一样有resize(int)
,我们可以用aggregate.begin()
来代替。
一元函数有点棘手,因为它需要被转换成一元函数,这是std::bind
/std::mem_fn
正在做的。如果你使用的是c++ 11,你可以使用lambda来代替。
同样来自上一个问题,@SingerOfTheFall的评论是有效的:
我也觉得在产品内部保存交易有点奇怪。一个更好的设计是有一个单独的类来存储它们。
如果你保持这个设计,Transaction Product::at(int)
和int Product::size()
应该重命名,使Transaction
的链接显式,就像getTransaction
和getNumberOfTransactions
。
相关文章:
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 检查编译时是否存在静态函数
- 名称隐藏对静态函数继承的实例使用
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- 类中静态函数C++意外结果
- 在工人类中使用不同类的静态函数进行实验
- 类 Referention 中C++回调函数引用非静态函数
- 指向模板上下文中的成员函数或静态函数的指针
- 如何检测 Clang AST C++中的静态函数
- 内联asm编译器屏障(内存阻塞器)是算作外部函数,还是算作静态函数调用
- 如何在静态函数中使用成员函数数组
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 生成代码(在编译时)以调用模板的每个实例化的静态函数
- C++无法访问或使用静态函数
- 如何将 cpp 文件中的静态函数公开给其他文件
- 将函数的引用设置为其他 c++ 文件中的非静态函数
- 方法的静态函数的等价性
- 扩展包含静态函数的类
- 将不同类型的QList转换为QString的静态函数
- QString fromStdString 静态函数而不是构造函数