c++ - 一个类可以特化一个模板类并同时继承它吗?

标签 c++ polymorphism

假设我有一个如下所示的模板基类:

template <typename T>
class Base
{
    public:
         virtual void somefunc() =0;
};

我想创建一个具体的派生类,为此我当然需要实现 somefunc .我可以这样做:

class Derived : public Base<int>
{
    public:
        virtual void somefunc() { std::cout << "hello\n";}
        void otherfunc() {std::cout << "Hello\n";}
};

但是当我试图通过 Boost Python 将这些东西暴露给 Python 时,这会造成麻烦。尽管我在这里只定义了两个类,BaseDerived , 我需要显式公开 Base<int>到 Python,即使我永远不会实例化它。我想知道的是,有没有什么方法可以在实例化它的同时从模板类继承?本质上,我可以将 Base 视为 Base 的派生类吗?

最佳答案

您可以创建一个表示 Base<int> 的类型使用 typedef

typedef BaseInt Base<Int>;

您应该能够使用 BaseInt然而,您正在将信息导出到 Boost Python。

关于c++ - 一个类可以特化一个模板类并同时继承它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625156/

相关文章:

java - JPA 关系和多态性

c++ - 函数参数中的C++数组指针

c++ - 错误 : &P cannot be used as a function

c++ - 为什么继承顺序或映射会影响 vftable 的下标? (适用于 C++ 的 VSC)

javascript - 我应该在 javascript 中使用多态性吗?

c - 在常规 C 中非法多态属性的方法?

polymorphism - Smalltalk 中的 "unbounded dynamic polymorphism"是什么

c++ - 明确的概念特化

c++ - 将原始数组传递给 std::vector 的最快方法

java - 使用 CREATE_NEW_PROCESS_GROUP 创建主机时,将 Ctrl+C 发送到子进程