誰かがなぜコードのこのスニペットをコンパイルできないのですか?私はこのデザインが非常に悪いことを知っていますが、なぜ私はそれをコンパイルできないのか知りたいのですが、事前に感謝します。 P.S.フォーマットのため申し訳ありませんが、私はaddDouble方法でIntClassでエラーが発生しているパネルC++のコンパイルエラー
//Deriving classes definition
class IntClass; class DoubleClass;
//The Virtual Number Class. IntClass and FloatClass will derive from this class.
class Number {
public:
//return a Number object that's the results of x+this, when x is DoubleClass
virtual Number& addDouble(DoubleClass& x) = 0;
//return a Number object that's the results of x+this, when x is IntClass
virtual Number& addInt(IntClass& x) = 0;
//return a Number object that's the results of x+this, when x is either
//IntClass or DoubleClass
virtual Number& operator+(Number& x) = 0;
};
class IntClass : public Number {
private:
int my_number;
public:
//Constructor
IntClass(int n):my_number(n) {}
//returns the number stored in the object
int get_number() {return my_number;}
//return a DoubleClass object that's the result of x+this
Number& addDouble(DoubleClass& x){
return x.addInt(*this);
}
//return an IntClass object that's the result of x+this
Number& addInt(IntClass& x){
IntClass* var = new IntClass(my_number + x.get_number());
return *var;
}
//return a Number object that's the result of x+this.
//The actual class of the returned object depends on x.
//If x is IntClass, then the result if IntClass.
//If x is DoubleClass, then the results is DoubleClass.
Number& operator+(Number& x){
return x.addInt(*this);
}
};
class DoubleClass : public Number {
private:
double my_number;
public:
//Constructor
DoubleClass(double n):my_number(n) {}
//returns the number stored in the object
double get_number() {return my_number;}
//return a DoubleClass object that's the result of x+this
Number& addDouble(DoubleClass& x){
DoubleClass* var = new DoubleClass(my_number + x.get_number());
return *var;
}
//return a DoubleClass object that's the result of x+this
Number& addInt(IntClass& x){
DoubleClass* var = new DoubleClass(my_number + x.get_number());
return *var;
}
//return a DoubleClass object that's the result of x+this.
//This should work if x is either IntClass or DoubleClass
Number& operator+(Number& x){
return x.addDouble(*this);
}
};
にバッククォートを見つけることができません。
invalid use of undefined type struct DoubleClass
編集 IntClassはNumberClassの入れ子になったクラス
ではありません
あなたはエラーを含めるのに気にすることはできませんか? –
コンパイラはどのようなエラーを報告しますか?どの行? –
フォーマットが修正されました。コードブロックを選択し、マークダウンエディタのツールバーの '{}'ボタンを使うか、 'Ctrl + K 'を押すか、各行の先頭に4つのスペースを入れるようにフォーマットします。 –