首先道歉,我不确定我的问题标题是否准确地解释了我的问题 - 我已经通过谷歌查看过,但我不确定我的搜索查询中需要哪些术语,所以答案可能已经在那里(甚至在 StackOverflow 上)。
我有一个模板类,它基本上如下所示 - 它使用单例模式,因此一切都是静态的,我不是在寻找关于为什么我将键存储在一个集合中并使用字符串等的评论,除非它实际上提供了一个解决方案。这门课还有更多内容,但这与问题无关。
template<typename T>
class MyClass
{
private:
//Constructor and other bits and peices you don't need to know about
static std::set<std::string> StoredKeys;
public:
static bool GetValue(T &Value, std::string &Key)
{
//implementation
}
static SetValue(const T Value, std::string &Key)
{
//implementation
StoredKeys.Insert(Key);
}
static KeyList GetKeys()
{
return KeyList(StoredKeys);
}
};
稍后在应用程序的其他部分中,我想获取所有值的所有键 - 无论类型如何。
虽然我相当有信心,目前该类只使用了 3 或 4 种类型,所以我可以编写如下内容:
KeyList Keys = MyClass<bool>::GetKeys();
Keys += MyClass<double>::GetKeys();
Keys += MyClass<char>::GetKeys();
每次使用新类型时都需要更新。如果它没有在任何地方使用,它也有实例化类的缺点。
我认为(再次我可能是错的)元编程是这里的答案,也许是某种宏?
我们正在使用 boost,所以我猜 MPL 库在这里可能有用吗?
STL 的这个方面对我来说有点新,所以我很乐意阅读并尽可能多地学习,只要我确切知道我需要学习什么来设计解决方案。