我通过谷歌搜索没有找到类似的问题,希望SO可以提供帮助。(下面是示例标题的伪代码)
namespace randomNamespace{
template <typename A, typename B>
class Shape{
public:
Shape(int);
~Shape();
bool insert(std::pair<A,B> ab);
private:
std::vector<std::pair<A,B> > someListOfPairs;
};
}
class Square : public Shape<string, string> //causes error requiring template before '<'
{
public:
Square(int); //When defined it is Square(int x) : Shape(x); as an initialization list to call superclass constructor
~Square();
bool insert(std::pair<string, string> p);
private:
//Shape<string, string> someShape -- see question #3
};
1) 如何正确继承模板化的基类?
2) 类Square是否可以访问someListOfPairs(不是私有的),例如当我调用Square的insert(pair of strings)时,它会调用Shape的insert(pair of generic type)?(此外,这实际上如何实现?)
3) 即使已经使用了继承,是否仍需要定义一个Shape对象someShape来正确使用Shape类成员?
Square::insert
隐藏Shape<string,string>::insert
。 - aschepler