私はこのCRacクラスを持っていて、メンバーにいくつか問題を与えています。 CCPファイルで C++:クラスXにはYという名前のメンバーがありません
//Definition TAD CRac.hpp
#ifndef CRAC_H
#define CRAC_H
namespace bblRac{
struct Racional{
int num, denom;
};
class CRac{
public:
CRac();
void read();
void asignarVal (const CRac& otroRac);
void write();
void add(const CRac& otroRac)const;
private:
Racional rac;
void simplif();
}; //End of class CRac
} //End of namespace bblrac
#endif
私は
#include "CRac.hpp"
using namespace bblRac;
void CRac::add(const CRac& otroRac)const{
CRac res;
res.num= rac.num + otroRac.num; //line 98
res.denom= rac.denom + otroRac.denom;
}
を持っていると私はそれを実行すると、出力が
CRac.cpp:98: error: ‘class bblRac::CRac’ has no member named ‘num’
CRac.cpp:98: error: ‘const class bblRac::CRac’ has no member named ‘num’
CRac.cpp:99: error: ‘class bblRac::CRac’ has no member named ‘denom’
CRac.cpp:99: error: ‘const class bblRac::CRac’ has no member named ‘denom’
である私は、このポインタでそれを修正しようとしていますが、それは継続します同じミスをしています。 ありがとう!
RacionalにはCRacではなく、メンバーnumがあります。おそらく 'res.num'の代わりに' res.rac.num'を使ったのでしょうか? (otroRac.numとrac.numで同じです)。 また、racのメンバーはプライベートなので、otroRacオブジェクトに直接アクセスすることはできません。おそらくgetRac()メソッドを追加する必要があります。 – Mesop
'add()'はあまり意味がありません。これは 'CRac'オブジェクトを生成し、それを修正し、それを破棄します。 'a.add(b)'に 'a'を変更させたい場合、' add() 'は' const'であってはならず、 'rac.num'、つまり' this-> rac.num '' res.rac.num'ではなく。また、これらのメソッドの多くは演算子のオーバーロードとして意味があります: 'read()'を 'friend std :: istream&operator >>(std :: istream&、CRac&)'、 'write()'として 'friend std :: 'CRac&演算子=(const CRac&)'、 'add()'を 'CRac&operator + =(const CRac&)'として、ostream&operator <<(std :: ostream&、const CRac&) '、' asignarVal' –
私がこの機能でやりたいことは、2つのオブジェクトを合計して別のオブジェクトに結果を保存することだけです。私は演算子+をオーバーロードしようとしましたが、出力は同じです:class bblRacにはメンバーはありません... – Rooxrod