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
メソッド ifQString
クラスを使用して%1
、 , %2
, ... をいくつかのパラメータで置き換えています。パラメータは、int、char*、double など、QString
サポートされているものであれば何でもかまいませんが、std::string
. std::string
関数のいずれかに渡すと非常に便利message
です。std::string
順序が定義されていないため、特殊化できません。それは最初、2番目、...
std::string
メソッドをQString
使用するように変換されるテンプレート構造体であるべきだと思います.c_str()
。誰がそれを書くのを手伝ってくれますか?