0
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 Circle {
public:
    Circle();
    Circle(Fraction& arg1);
   ~Circle();
    void print(void);
protected:
    Fraction *radius;
};

#include "Fraction.h"
#include "Circle.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() {
}

//Circle

Circle::Circle() {
    radius->setNum(1);
    radius->setDenom(1);
}
Circle::Circle(Fraction& arg1) {
    radius->setNum(arg1.getNum());
    radius->setDenom(arg1.getDenom());
}
Circle::~Circle() {
     delete this->radius;
}

main() でオブジェクトを作成するときに問題が発生します

 Fraction* fPtr = new Fraction(4, 1);
 Circle* cPtrA = new Circle(*fPtr);

これらは両方ともクラスです。まず、コピー コンストラクターを使用して、classFraction の Numerator を 4 に、Denominator を 1 に設定します。

次に、その (4, 1) を classCircle に渡したいのですが、デバッガーを介して未処理の例外のこのエラーが発生します

4

2 に答える 2