VC++从抽象类继承
我有两个这样的类:
// parent.h
class Parent {
public:
virtual void Method() = 0;
}
和
//child.h
#include "parent.h"
class Child : public Parent {
public:
Child();
~Child();
virtual void Method();
}
//child.cpp
#include "child.h"
Child::Child() { }
Child::~Child() { }
void Child::Method() { }
+
void main() {
Parent* p = new Child();
}
这在 Linux 上与 g++ 配合得很好,但是当我尝试在 VS 2010 中应用相同的模式时,我得到:
error C2259: 'Child' : cannot instantiate abstract class
有什么想法吗?
I have two classes like this:
// parent.h
class Parent {
public:
virtual void Method() = 0;
}
and
//child.h
#include "parent.h"
class Child : public Parent {
public:
Child();
~Child();
virtual void Method();
}
//child.cpp
#include "child.h"
Child::Child() { }
Child::~Child() { }
void Child::Method() { }
+
void main() {
Parent* p = new Child();
}
This works fine with g++ on Linux, but when I try to apply the same pattern in VS 2010 I get:
error C2259: 'Child' : cannot instantiate abstract class
Any ideas why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您需要在头文件中的函数签名之前添加
public:
。 g++ 可能会将其解释为私有函数。I think you need to add
public:
before your function signature in the header file. g++ might be interpreting it as a private function.