如何处理 C++ 中的“无法实例化抽象类”错误?我在这里查看了一些类似的错误,但它们似乎都不是我遇到的完全相同或问题。但是,话又说回来,我承认有几个要过去。这是编译错误:
这将我带到此页面: http: //msdn.microsoft.com/query/dev10.query ?appId=Dev10IDEF1&l=EN-US&k=k(C2259);k(VS.ERRORLIST)&rd=true 编译错误 C2259 来自一个 C++ 程序,但页面将抽象类称为“接口”:
每当您从接口派生并在派生类中以公共以外的访问权限实现接口方法时,您可能会收到 C2259。发生这种情况是因为编译器希望派生类中实现的接口方法具有公共访问权限。当您为具有更严格访问权限的接口实现成员函数时,编译器不会将它们视为接口中定义的接口方法的实现,从而使派生类成为抽象类。
该问题有两种可能的解决方法:
为实现的方法公开访问权限。
对派生类中实现的接口方法使用范围解析运算符,以用接口名称限定实现的方法名称。
坏消息是我已经在类中公开了所有方法:
class AmbientOccluder: public Light {
public:
AmbientOccluder(void);