VC++从抽象类继承

发布于 2024-10-21 04:57:53 字数 668 浏览 1 评论 0原文

我有两个这样的类:

// 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叹倦 2024-10-28 04:57:53

我认为您需要在头文件中的函数签名之前添加 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文