You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在调用仅基类实现、派生类未实现的函数时触发编译警告或错误?

C++20 部分特性实现的接口类设计问题

场景

  • 基于C++20标准。
  • 存在作为接口的Base类,定义了所有可用特性(成员函数);同时有多个派生类,这些派生类可能仅实现其中部分特性,所有函数均为虚函数。
  • 部分函数在所有派生类中的实现完全相同。
  • 成员函数可能存在重载。
  • 可通过SFINAE或concept静态检查某Derived类是否支持某个函数。

需求

  • 调用派生类未实现的函数时,应触发编译警告或错误。
  • 随着特性和派生类数量增加,新增时无需进行过多修改。
  • 派生类需能够转换为基类。
  • 对于所有派生类实现完全相同的函数,无需进行过多处理。

现有非完美解决方案

  • 在Base类中实现所有特性,函数内部抛出错误;在Derived类中使用using将该函数置于私有域。缺点:新增特性时需修改所有类,若遗漏则无警告。
  • 在Base类中使用纯虚函数,并在每个Derived类中实现所有特性。缺点:对于派生类不需要的特性,需编写大量重复的抛出错误的实现代码。

更新

关于上述第二种方案中“大量重复实现”的问题,我制作了一个代码示例来展示这种冗余性。


内容的提问来源于stack exchange,提问作者edison Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:00:19