本文介绍了C ++:只有子类的模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法让一个模板只使用一个基类的子类?这样的东西:

Is there any way to make a template only work with child classes of a base class? Something like this:

template<BaseClass T>
class FooBar
{
    // ...
};


推荐答案

例如),或者致电构造函数(或在使用代码时总是生成的其他代码)转换为采用BaseClass类型的无用功能,例如:

Either use a static assert from your favourite C++ library (such as this boost example), or put a call in the constructor (or other code which will always be generated when the code is used) to a do-nothing function taking a BaseClass type, for example:

template<class T>
class FooBar
{
public:
    FooBar () {
        Check(static_cast<T*>(0));
    }

private:
    void Check ( BaseClasse* ) {} 
};

(未测试)

这篇关于C ++:只有子类的模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 21:30