Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 虚纯函数_C++_Inheritance_Overriding_Virtual_Pure Virtual - Fatal编程技术网

C++ 虚纯函数

C++ 虚纯函数,c++,inheritance,overriding,virtual,pure-virtual,C++,Inheritance,Overriding,Virtual,Pure Virtual,我知道类内部的纯虚函数使该类变得抽象。这意味着我不能用那个类创建对象,我必须在所有派生类中重写那个虚函数 我有以下代码: class Forma{ protected: double x,y; public: Forma(double h=0, double v=0); virtual double Arie() const; virtual double Perimetru() const=0; }; class

我知道类内部的纯虚函数使该类变得抽象。这意味着我不能用那个类创建对象,我必须在所有派生类中重写那个虚函数

我有以下代码:

class Forma{
    protected:
        double x,y;
    public:
        Forma(double h=0, double v=0);
        virtual double Arie() const;
        virtual double Perimetru() const=0;
};

class Dreptunghi: public Forma{
    public:
        Dreptunghi(double h=0, double v=0);
        virtual double Arie() const;
        virtual double Perimetru() const;
};

class Cerc:public Forma{
    protected:
        double raza;
    public:
        Cerc(double h=0, double v=0, double r=0);
        virtual double Arie() const;
        virtual double Perimetru() const;
 };

 Forma::Forma(double h,double v){x=h; y=v;}
 double Forma::Arie() const{return x*y;}
 double Forma::Perimetru() const{return x+y;}

 Dreptunghi::Dreptunghi(double h,double v){Forma(h,v);}
 double Dreptunghi::Arie() const{return x*y;}
 double Dreptunghi::Perimetru() const{return 2*x+2*y;}
我的错误如下:


我怎样才能解决这个问题?谢谢。

将参数传递给基类的语法如下:

Dreptunghi::Dreptunghi(double h, double v) : Forma(h, v) {}
按照您编写它的方式,它会尝试创建
Forma
的实例,这当然是不允许的

Dreptunghi::Dreptunghi(double h, double v) : Forma(h, v) {}