首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++:无法将字段声明为抽象类型

C++:无法将字段声明为抽象类型
EN

Stack Overflow用户
提问于 2010-11-28 18:05:13
回答 2查看 53.9K关注 0票数 27

我在编译时得到这个错误,->不能将字段M1::sc声明为抽象类型I1,因为下面的虚函数在I1中是纯的。请帮帮忙。

代码语言:javascript
复制
   class I1
    {    
    public:  
        virtual void a(int dir) = 0;
        virtual void b() = 0; 
        virtual void c() = 0; 

        void a(int dir) {  
        ....
        }

        void b() {  
        ....
        }

        void c() {  
        ....
        }
    };

    class I2 : public I1
    {    
    public:  


        void a(int dir) {  
        ....
        }

        void b() {  
        ....
        }

        void c() {  
        ....
        }
    }; 

    class M1 : public G1
    {
    protected:
    I1 sc;
    public:
       int dir = 4;
       sc.a(dir);
    };

完整的代码可以在http://pastebin.com/PFrMTJuF上找到。

EN

回答 2

Stack Overflow用户

发布于 2010-11-28 18:07:45

I1是一个抽象类,因为它有纯粹的虚函数(=没有定义的函数)。

您不能创建抽象类的实例(因为它们是如何工作的?!),因此像I1 a这样的声明不起作用。

在您对问题进行编辑之后,似乎I1不应该是一个抽象类,因为您提供了方法的定义。如果是这种情况,只需删除方法声明后的= 0即可使代码正常工作。

票数 8
EN

Stack Overflow用户

发布于 2010-11-28 18:13:31

您不能创建实例到抽象类(具有一个或多个纯虚函数的类)。还有另一个问题。当你在类声明中调用函数sc.a(dir)时,你希望编译器做什么?行dir = 4也不正确,在类声明中只能初始化类的静态常量成员。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4296276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档