template<typename T> class A {
B b;
std::vector<T> vec1;
std::vector<T> vec2;
}
我想B到具有填充一个成员函数(),它于那些参考矢量,并用值填充VEC2 T取决于b中包含的一些信息。这样做的
一种方法是超载填写()为每个可能的参数T:
fill(const std::vector<float>& a, std::vector<float>& b)
等等,但是这将意味着很多不必要的重复的操作对于每一个可能的T.内的同fill()我可以使用vector :: value_type进行计算,但是我不知道如何以这种方式声明它需要使用各种std :: vector。显而易见的方法是使用模板的免费功能。有没有更简单的方法来做到这一点?
更多信息:B是纯虚函数的继承层次结构的一部分,并且包含在一个智能指针指向基类中。 用户需要实例化与A相同类型的B(这会增加错误的可能性),对于类的用户来说不会很明显,所以我宁愿避免这种情况。 – pmr 2009-10-28 23:36:16
我意识到重构大层次结构是一种痛苦,但是您也可能尝试使用策略类作为模板参数,而不是传入智能指针,并显然(基于您的描述)牺牲类型安全性来提高灵活性。 – 2009-10-28 23:48:24