如何继承模板化基类
How to inherit a templatised Base class?
我是STL的新手。我已经写了一个模板基类如下
template <class T>
class Base
{
public:
//Constructor and Destructor ..
Base();
virtual ~Base();
virtual foo() = 0;
};
现在,我想设计我的框架,这样我继承的类将从这个类公开派生,并在它们各自的实现中实现foo。问题是我不知道如何从Template基类继承?是不是如下。。。
template class<T>
class Derived : public Base<T>
{
// Implementation of Derived constructor etc and methods ...
};
或普通C++方式
class Derived : public Base
{
};
有什么建议吗?此外,我将感谢为像我这样的新手提供任何入门STL的信息。。。
问候,
Atul
后来的
class Derived : public Base
将不工作,因为Base
不是类,而是类模板。这取决于Derived
是否应该是模板,或者它是否应该继承Base
的特定实例:
模板:
template<typename T> class Derived : public Base<T>
非模板:
class Derived : public Base<Something>
(其中
Something
是某种具体类型,如int
、char *
或std::string
(
任一
template class<T>
class Derived : public Base<T>
{ };
如果您希望Derived
与任何类型的Base<>
一起工作。
或
class Derived : public Base<SomeSpecificType>
{ };
如果希望CCD_ 10仅与特定类型的CCD_。
您的第二个示例就是接下来的方法。
template class<T>
public Base<T>
{ // Implementation of Base constructor etc and methods ...
};
template class<T>
class Derived : public Base<T>
{ // Implementation of Derived constructor etc and methods ...
public:
Derived() : Base<T>() { } //have to construct the proper instanciation of Base
};
除了上面的答案外,还要注意它也可以通过以下方式:
template<typename T>
class Derived : public Base<Something> // Something is some concrete type
或
template<typename T, typename U>
class Derived : public Base<U>
相关文章:
- 派生类是从基类继承 v 指针并仅使用它,还是也有自己的 v 指针?
- C++ - 无法从基类继承 |提供空值
- C++排除通过派生类中的基类继承的类
- 派生类不从基类继承数据成员
- 如何修复从基类继承两次时"error: no matching function for call to"
- C - 从基类继承,成员函数作为模板参数
- 从C++中的基类继承复制/移动构造函数作为构造函数
- 如何从 c++ 基类继承抽象行为
- 将initalizer列表与从空基类继承的结构一起使用
- 在从抽象基类继承的类中添加方法
- 在 C++ 中进行第 n 次继承后停止从基类继承
- std::bad_weak_ptr 从基类继承 std::shared_from_this 时
- 从基类继承私人成员到派生类C
- 从C 中的空基类继承
- 将从基类继承的构造函数与自定义构造函数混合使用
- 创建从基类继承的对象
- 从只有纯虚拟函数的基类继承
- 在发布模式下禁用从C++中的基类继承
- 可以强制从抽象基类继承的类只在基类中定义公共方法吗
- Qt UI 插槽不是由从基类继承的信号调用的