0

3クラスはこちら。分数/長方形/ボックス

class Fraction {
public:
    Fraction();
    Fraction(int);
    Fraction(int, int);
    ~Fraction();
    void setNum(int);
    void setDenom(int);
    int getNum(void) const;
    int getDenom(void) const;
    void print(void);
private:
   int num;
   int denom;
};

class Rectangle {
public:
    FinalRectangleRavuthL();
    ~FinalRectangleRavuthL();
    FinalRectangleRavuthL(Fraction&, Fraction&);
    void setLen(Fraction arg);
    void setWid(Fraction arg);
    Fraction getLen(void) const;
    Fraction getWid(void) const;
    friend ostream& operator<<(ostream&, Rectangle&);
private:
Fraction *len; 
Fraction *wid;
};

class Box : public Rectangle {
public:
    Box();
    FinalBoxRavuthL(Rectangle& arg, Fraction& arg1);
    FinalBoxRavuthL(Fraction& arg);
    void print(void);
    void getBox(void);
    ~FinalBoxRavuthL();
private:
Fraction *height;
}; 

//プログラム

#include "Fraction.h"
#include "Circle.h"
#include "Box.h"
#include <iostream>
using namespace std;

Fraction::Fraction() {
    num = 0;
    denom = 1;
}
Fraction::Fraction(int n, int d) {
    num = n;
    denom = d;
}
Fraction& Fraction::operator=(const Fraction& arg) {
    num = arg.num;
    denom = arg.denom; 
    return *this;
}
Fraction::~Fraction() {
}

//Rectangle
Rectangle::Rectangle() {
    *len = FinalFractionRavuthL(2);
    *wid = FinalFractionRavuthL(1);
}
Rectangle::RectangleFraction& frac, Fraction& frac1) {
    cout << "First Fraction : ";
    frac.print();
    cout << "Second Fraction : ";
    frac1.print();
}

void Rectangle::setLen(Fraction arg) {
    len->setNum(arg.getNum());
    len->setDenom(arg.getDenom());
}
void Rectangle::setWid(Fraction arg) {
    wid->setNum(arg.getNum());
    wid->setDenom(arg.getDenom());
}
Fraction Rectangle::getLen(void) const {
    return Fraction(len->getNum(), len->getDenom());
}
Fraction Rectangle::getWid(void) const {
    return Fraction(wid->getNum(), wid->getDenom());
}
Rectangle::~Rectangle() {
    delete this->len;
    delete this->wid;
}

//Box
Box::Box() : height(new Fraction())
{
    height->setNum(0);
    height->setDenom(0);
}
Box::Box(Rectangle& arg, Fraction& arg1) : height(new Fraction())
{
    arg.getLen().print();
    arg.getWid().print();

    cout << arg1.getNum();
    cout << arg1.getDenom();
}
Box::Box(Fractio& arg) {
        height->setNum(arg.getNum());
    height->setDenom(arg.getDenom());
}
Box::~Box() {
    delete this->height;
} 

これをメインで呼び出すと問題が発生します

Fraction* fPtrA = new Fraction(4, 1);
Rectangle* rPtrA = new Rectangle(*fPtrA, *fPtrA);
Fraction* fPtrD = new Fraction(9, 1);

BoxRavuthL* boxPtrA = new Box(*rPtrA, *fPtrD); //PROBLEM

2 つの分数 fPtrA をクラス Rectangle に入れて長方形を作成し、別の分数を作成します

次に、Rectangle と分数を Box に渡します

問題は、私が作成したデフォルトのコンストラクターに関係していることを知っています。助けてください:)私は通常のメンバーデータを使用できることを知っています

4

2 に答える 2