AOO*_*AOO 3 c++ inheritance templates
如何扩展模板类,例如vector?以下代码不起作用.编译器抱怨'Vector'不是模板.
template <typename T>
class Vector<T> : public std::vector<T>
{
public:
void DoSomething()
{
// ...
}
};
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 19
你的语法错了; 你需要使用:
template <typename T>
class Vector : public std::vector<T>
Run Code Online (Sandbox Code Playgroud)
也就是说,如果没有其他原因,你不应该通过继承来扩展标准库容器,因为它们没有虚拟析构函数,因此它本身就是不安全的.
如果要"增强" std::vector,请使用合成(即使用std::vector类型的成员变量)或使用非成员函数来提供附加功能.
这与扩展另一个类无关.问题是你自己的派生类.
您可以像这样定义类模板:
template <typename T>
class Vector
{
...
Run Code Online (Sandbox Code Playgroud)
并不是
template <typename T>
class Vector<T>
{
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8456 次 |
| 最近记录: |