2011-06-09 120 views
2

有时,我正在处理相对复杂的问题(并且有时会混淆 - 以最初编写它的人的布局方式)抽象类。从它继承时,我有时会遇到cannot instantiate abstract class,大部分时间是因为我忘记声明&实现了一个纯虚函数。我可以从编译器获得更多关于它找到的函数的信息,我没有实现它而不是寻找它?有关“无法实例化抽象类”的更多信息

+2

您是否使用Visual Studio?然后从错误列表选项卡切换到输出。会有这样的错误:'错误C2259:'foo':由于以下成员,无法实例化抽象类:[缺少纯虚拟成员]' – Fanael 2011-06-09 15:16:20

+1

@Fanael:正是我所要求的!我不知道输出结果如何。如果你把这个作为答案,我会检查它。 – Samaursa 2011-06-09 15:17:58

回答

4

您是否使用Visual Studio?如果是,则从错误列表选项卡切换到输出选项卡。会有这样的:

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

每当你遇到的消息,然后立即意味着你还没有定义在派生类virtual功能,并希望创建它的一个实例。如果你使用的是一个好的编译器,那么我敢肯定,它表明哪个纯粹的virtual函数你没有实现。至少,GCC表明这一点。

在这里看到的错误消息:http://www.ideone.com/83iDk

prog.cpp: In function ‘int main()’:
prog.cpp:11: error: cannot declare variable ‘a’ to be of abstract type ‘A’
prog.cpp:6: note: because the following virtual functions are pure within ‘A’:
prog.cpp:7: note: virtual void A::f()

那是绰绰有余的,你没有实现A::f()

+1

Visual Studio也指出了这一点(感谢Fanael指出它)。谢谢! (1) – Samaursa 2011-06-09 15:20:30

相关问题