C++ 让编译器告诉什么样的纯虚拟方法使结构抽象? struct Base{ 虚拟foo()=0; 虚拟条()=0; }; 派生结构:基{ 虚拟foo(){} //bar()仍然是纯虚拟的 }; static_assert(是可构造的吗?“您忘了覆盖几个方法:我不知道它们是什么。”)

C++ 让编译器告诉什么样的纯虚拟方法使结构抽象? struct Base{ 虚拟foo()=0; 虚拟条()=0; }; 派生结构:基{ 虚拟foo(){} //bar()仍然是纯虚拟的 }; static_assert(是可构造的吗?“您忘了覆盖几个方法:我不知道它们是什么。”),c++,C++,“我不知道它们是什么。” 如何用要重写的方法的确切列表替换此短语 让编译器告诉什么样的纯虚拟方法使结构抽象 这是非常特定于编译器和工具的 如果你的C++编译器最近读了它的文档(特别是它如何)。对我来说也是 如何用要重写的方法的确切列表替换此短语 这在标准11中可能不可能(我不确定:通过阅读进行检查)。但是,您可以自定义编译器(例如,编写编译器)来警告您这种情况 也可以尝试像or(及其FramaC++变体)这样的工具,或者根据您的需要定制它们 考虑考虑生成你需要的C++代码(例如使用或使用你自己使

“我不知道它们是什么。”

如何用要重写的方法的确切列表替换此短语

让编译器告诉什么样的纯虚拟方法使结构抽象

这是非常特定于编译器和工具的

如果你的C++编译器最近读了它的文档(特别是它如何)。对我来说也是

如何用要重写的方法的确切列表替换此短语

这在标准11中可能不可能(我不确定:通过阅读进行检查)。但是,您可以自定义编译器(例如,编写编译器)来警告您这种情况

也可以尝试像or(及其FramaC++变体)这样的工具,或者根据您的需要定制它们


<>考虑考虑生成你需要的C++代码(例如使用或使用你自己使用的工具驱动的C++元程序),像或做。该工具可能很有启发性,可能对您有用或适合您的需要。

也许您只需要让编译器尝试编译时实例化。例如:

struct Base{
  virtual foo()=0;
  virtual bar()=0;
};
struct Derived:Base{
  virtual foo(){}
  //bar() is still pure virtual
};
static_assert(is_constructible_v<Derived>,"You forgot to override few methods: i do not know what are they.")

如果有编译器支持将类的抽象方法列表放入字符串中,我会感到惊讶。只要你尝试实例化
派生的
,编译器就会告诉你(至少g++显示了未被重写的确切方法),不确定是否可以使用断言来完成。当您尝试实例化它时,您希望使用
静态断言来完成此操作的原因是什么,而不是让编译器抱怨
派生:基
不完整?当我尝试使用moke_共享实例化派生时,它检查是否可构造。这就是我的观点。这在任何情况下都是编译错误,
是可构造的
在其他情况下可能是错误的,所以你的结论是错误的。是的。这就是我要找的。谢谢!
static_assert(sizeof(Derived[1]),"...");