假设我有一个模板基类,如下所示:
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的派生类吗?
答案 0 :(得分:0)
您可以使用Base<int>
typedef
的类型
typedef BaseInt Base<Int>;
您应该可以使用BaseInt
但是要将信息导出到Boost Python。
答案 1 :(得分:0)
如果您不需要接口类,则可以专门化模板。
// No definition required
template <typename T>
class Base;
// Specialization
template <>
class Base<int> {
public:
virtual void somefunc();
void otherfunc();
}