gpt4 book ai didi

c++ - 强制派生自类

转载 作者:太空狗 更新时间:2023-10-29 23:14:51 27 4
gpt4 key购买 nike

我们项目中有一个专门的接口(interface)框架,部分要求是表示接口(interface)的类只能用作虚基类,不能用作非虚基类。有没有办法在代码中强制执行此操作?也就是说,如果该类是从非虚拟派生的,则会产生编译错误。

我可以访问由 VS 2010 实现的 C++11:这意味着 static_assert , enable_if<type_traits>可用。

最佳答案

IMO,没有针对此问题的干净且独立于平台的解决方案。

最好的方法是手动将每个继承更改为虚拟继承。
要实现这一点,识别接口(interface)的派生类(比如 class Base)很容易(!)。可以遵循以下步骤:

  1. class Base 设为 final (c++11);即 class Base final { ...
  2. 编译代码,它会产生编译错误派生类
  3. 去检查每个派生类并使继承为虚拟
  4. 去掉final关键字,编译成功

这个过程(不幸的是)必须定期执行,无论何时你想做这样的完整性检查。

关于c++ - 强制派生自类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com