假设我有一个如下所示的模板基类:
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 时,这会造成麻烦。尽管我在这里只定义了两个类,Base
和 Derived
, 我需要显式公开 Base<int>
到 Python,即使我永远不会实例化它。我想知道的是,有没有什么方法可以在实例化它的同时从模板类继承?本质上,我可以将 Base 视为 Base 的派生类吗?
最佳答案
您可以创建一个表示 Base<int>
的类型使用 typedef
typedef BaseInt Base<Int>;
您应该能够使用 BaseInt
然而,您正在将信息导出到 Boost Python。
关于c++ - 一个类可以特化一个模板类并同时继承它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625156/