0
class StringResourceTable
{
private:
StringResourceTable();
public:
static StringResourceTable& instance();
void configure(const QString& path);
QString message(const QString& id) const;
template <typename T1>
QString message(const QString& id, T1 a1) const
{
return message(id).arg(a1);
}
template <typename T1, typename T2>
QString message(const QString& id, T1 a1, T2 a2) const
{
return message(id).arg(a1).arg(a2);
}
template <typename T1, typename T2, typename T3>
QString message(const QString& id, T1 a1, T2 a2, T3 a3) const
{
return message(id).arg(a1).arg(a2).arg(a3);
}
private:
QString m_path;
QMap<QString, QString> m_map;
}
該代碼使用arg
方法,如果QString
類的一些參數替代%1
,%2
,...。參數可以是int,char *,double和QString
支持的任何值,但不能是std::string
。將std::string
傳遞給message
函數是非常方便的。我無法專門爲std::string
專門設計,因爲它的順序沒有定義。它可能是第一,第二,...如何將`std :: string`傳遞給`QString`` arg`方法?
我認爲它應該是一個模板結構,它將使用.c_str()
方法將std::string
轉換爲QString
。誰可以幫助寫作呢?
但通過INT例如當它應該如何工作。它應該是模板的其他類型的工作 – Ashot
@Ashot你可以重載你的模板方法用於字符串... – ForEveR