当前位置:  开发笔记 > 编程语言 > 正文

使用C++中的模板检查继承

如何解决《使用C++中的模板检查继承》经验,为你挑选了1个好方法。

我有一个类,它是一个包装类(作为一个通用接口)围绕另一个实现所需功能的类.所以我的代码看起来像这样.

template class WrapperClass {
// the code goes here
}

现在,我如何确保ImplementationClass只能从一组类派生,类似于java的泛型


句法?



1> Daniel James..:

它很冗长,但你可以这样做:

#include 
#include 

struct base {};

template 
class WrapperClass;

template 
class WrapperClass >::type>
{};

struct derived : base {};
struct not_derived {};

int main() {
    WrapperClass x;

    // Compile error here:
    WrapperClass y;
}

这需要与标准的良好支持编译器(最近编译器应该是Visual C++会不会是好的,但旧版本).有关更多信息,请参阅Boost.Enable_If文档.

正如Ferruccio所说,一个更简单但功能更弱的实现:

#include 
#include 

struct base {};

template 
class WrapperClass
{
    BOOST_STATIC_ASSERT((
        boost::is_base_of::value));
};

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有