Visual Studio 查找未覆盖的纯虚拟函数
Visual Studio find un-overriden pure virtual functions
我正在设计一个继承自几个接口的类,每个接口都有许多纯虚函数。我希望能够实例化我的类,所以我需要覆盖它继承的所有纯虚函数。我希望有一种方法来突出显示或显示我尚未在我的派生类中覆盖但尚未找到的函数。
我尝试生成一个类图来直观地比较派生类和基类中的函数。但是,我更喜欢更直接和优雅的解决方案,尤其是随着项目的发展。
下面是一个概括的示例:
福.h
class Foo {
public:
virtual int foo1() = 0;
virtual int foo2() = 0;
virtual int foo3() = 0;
virtual int foo4() = 0;
//...
virtual int foo90() = 0;
};
酒吧
class Bar : public Foo {
public:
int foo1() override {
return 4;
}
int foo2() override {
//do stuff
}
//darn, I lost track of what I still need to implement!
};
Visual Studio是否有办法自动显示哪些功能仍未被覆盖?或者,如果有一个编译器选项来为每个阻止我的类实例化的抽象函数显示错误/警告,那么这将同样有用。
假设你有:
class Foo {
public:
virtual int foo1() = 0;
virtual int foo2() = 0;
virtual int foo3() = 0;
virtual int foo4() = 0;
};
class Bar : public Foo {
public:
int foo1() override {
return 4;
}
int foo2() override {
//do stuff
}
};
你实例化酒吧:
int main()
{
Bar b;
}
Visual Studio 生成一个 C2259 编译错误,告知您无法实例化抽象类,并突出显示 foo3(( 和 foo4(( 是抽象的("由于以下成员"(:
1>C:UsersAmitsourcereposTestTestTest.cpp(115,9): error C2259: 'Bar': cannot instantiate abstract class
1>C:UsersAmitsourcereposTestTestTest.cpp(99): message : see declaration of 'Bar'
1>C:UsersAmitsourcereposTestTestTest.cpp(115,9): message : due to following members:
1>C:UsersAmitsourcereposTestTestTest.cpp(115,9): message : 'int Foo::foo3(void)': is abstract
1>C:UsersAmitsourcereposTestTestTest.cpp(95): message : see declaration of 'Foo::foo3'
1>C:UsersAmitsourcereposTestTestTest.cpp(115,9): message : 'int Foo::foo4(void)': is abstract
1>C:UsersAmitsourcereposTestTestTest.cpp(96): message : see declaration of 'Foo::foo4'
1>Done building project "Test.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
相关文章:
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 类型擦除的std::function与虚拟函数调用的开销
- 重写虚拟函数和继承
- 用纯虚拟函数兜圈子
- 为什么使用存储在虚拟方法表中的地址调用虚拟函数的函数会返回垃圾?
- 禁止子函数调用父级的抽象(或虚拟)函数
- 无法在子类中使用虚拟函数C++
- 无法在派生对象上运行虚拟函数
- 我可以调用从 main() 覆盖的虚拟函数吗?
- 在 C++ 中将函数获取和设置为虚拟函数
- 使用在堆栈上创建的对象调用虚拟函数
- 为什么在这种情况下不调用我的虚拟函数实现?
- 在C++中使虚拟函数私有化
- 模板继承类中的虚拟函数
- 为什么构造函数的虚拟函数调用有时有效,但其他调用却无效
- doxygenc++虚拟函数和实现
- 如何从派生类函数中调用虚拟函数