相关疑难解决方法(0)

如何测试B类是否来自A类?

更具体地说,假设我有一个带参数的类模板AB,我想有一个编译器错误(当模板被实例化)如果B未从A派生

template<class A, class B>
class Foo
{
    // static_assert(B is derived from A)
};
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates

7
推荐指数
2
解决办法
5619
查看次数

C++:为模板参数指定基类

我需要设计一个框架来并行地计算除法和征服算法的结果.为了使用框架,用户需要以某种方式指定实现"划分"阶段(从T到T的函数),"征服"阶段(从D到D的函数)和T和D本身的过程.

我认为定义两个抽象类会很好,BaseDivide并且它会使用正确的类型BaseConquer声明一个纯虚方法compute:这样我就有了一个实现明确定义概念的类型(从框架的角度来看)通过派生抽象类包含用户可定义的函数.

我曾经想过使用模板将类型传递给框架,因此用户不必为了使用框架而实例化它们,所以像这样:

template <typename T, typename D, typename Divide, typename Conquer> 
D compute(T arg);
Run Code Online (Sandbox Code Playgroud)

我的问题是我希望Divide and Conquer是派生类型BaseDivideBaseConquer:有一种方法可以在编译时强制执行它吗?另外:你认为我可以通过更清洁的设计获得类似的结果吗?

c++ templates

6
推荐指数
1
解决办法
4545
查看次数

标签 统计

c++ ×2

templates ×2

inheritance ×1