C++ 更多有关「;无法实例化抽象类";

C++ 更多有关「;无法实例化抽象类";,c++,abstract-class,C++,Abstract Class,有时我处理的是相对复杂的抽象类(有时是令人困惑的——它们是由最初编写它们的人设计的)。从它继承时,我有时会遇到无法实例化抽象类,大多数时候是因为我忘记声明和实现纯虚函数。我能从编译器那里得到更多信息吗?它发现我没有实现哪个函数,而不是寻找它?每当你遇到这个消息,那就意味着你没有在派生类中定义一个纯的虚的函数,你想创建它的一个实例。如果你使用的是一个好的编译器,我敢肯定,它会指出你没有实现哪个纯virtual函数。至少,GCC表明了这一点 请参见此处的错误消息: prog.cpp:在函数“int

有时我处理的是相对复杂的抽象类(有时是令人困惑的——它们是由最初编写它们的人设计的)。从它继承时,我有时会遇到
无法实例化抽象类
,大多数时候是因为我忘记声明和实现纯虚函数。我能从编译器那里得到更多信息吗?它发现我没有实现哪个函数,而不是寻找它?

每当你遇到这个消息,那就意味着你没有在派生类中定义一个纯的
虚的
函数,你想创建它的一个实例。如果你使用的是一个好的编译器,我敢肯定,它会指出你没有实现哪个纯
virtual
函数。至少,GCC表明了这一点

请参见此处的错误消息:

prog.cpp:在函数“int main()”中:
prog.cpp:11:错误:无法将变量“a”声明为抽象类型“a”
prog.cpp:6:注意:因为以下虚拟函数在“A”中是纯函数:
程序cpp:7:注意:虚拟空A::f()


您没有实现
A::f()

这就足够了。您使用的是Visual Studio吗?如果是,则从“错误列表”选项卡切换到“输出”选项卡。会有类似于:

main.cpp(8): error C2259: 'foo' : cannot instantiate abstract class
          due to following members:
          'void Foo::method(char)' : is abstract

您正在使用Visual Studio吗?然后从错误列表选项卡切换到输出。将出现如下情况:
错误C2259:'foo':由于以下成员而无法实例化抽象类:[缺少纯虚拟成员]
@Fanael:正是我所需要的!我不知道打印出来的输出。如果你把它作为一个答案,我会检查它。VisualStudio也指出了这一点(感谢Fanael指出这一点)。谢谢(+1)