C++ c++;:类X没有名为Y的成员
我有一个CRac类,它给了我一些与它的成员有关的问题C++ c++;:类X没有名为Y的成员,c++,class,C++,Class,我有一个CRac类,它给了我一些与它的成员有关的问题 //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); voi
//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
我有一份ccp文件
#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’
我试着用指针修复它,但它仍然会出现同样的错误。。
谢谢大家!
res.rac.num = whatever;
otroRac.rac.num = whatever;
在点击复制/粘贴到StackOverflow之前,请仔细查看您的代码
在点击“复制/粘贴到StackOverflow”之前,请仔细查看您的代码。这将修复它
#include "CRac.hpp"
using namespace bblRac;
void CRac::add(const CRac& otroRac)const{
CRac res;
res.rac.num= rac.num + otroRac.rac.num; //line 98
res.rac.denom= rac.denom + otroRac.rac.denom;
}
您的CRac
类包含一个Racional
成员变量,num
和denom
不是CRac
的成员,这将修复它
#include "CRac.hpp"
using namespace bblRac;
void CRac::add(const CRac& otroRac)const{
CRac res;
res.rac.num= rac.num + otroRac.rac.num; //line 98
res.rac.denom= rac.denom + otroRac.rac.denom;
}
您的
CRac
类包含一个Racional
成员变量,num
和denom
不是CRac
@CyberDude的成员。你可以从CRac
成员函数内部访问privateCRac
private成员。这样它也不起作用,因为res
和rac
是对象,我想访问num和denom(分母)所以它继续给我同样的错误:类bblRac没有名为num的成员,并且denomI怀疑您是否得到了这个错误,因为bblRac
是一个名称空间。我刚刚复制了您的代码,将其粘贴到一个文件中,修改了我在回答中所述的内容,并编译了它。你确定在我的回答中包含了我提供的全部方法吗?复制并粘贴它。@CyberDude您可以从CRac
成员函数内部访问私有CRac
私有成员。这种方式也不起作用,因为res
和rac
是对象,我想访问num和denom(分母)所以它继续给我同样的错误:类bblRac没有名为num的成员,并且denomI怀疑您是否得到了这个错误,因为bblRac
是一个名称空间。我刚刚复制了您的代码,将其粘贴到一个文件中,修改了我在回答中所述的内容,并编译了它。你确定在我的回答中包含了我提供的全部方法吗?复制并粘贴它。我有一个成员编号,而不是CRac。也许你的意思是res.rac.num
而不是res.num
?(otroRac.num和rac.num相同)。另外,成员rac是私有的,您将无法直接为otroRac对象访问它,也许您应该添加一个方法getRac()。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::ostream&operator,我想用这个函数将两个对象相加,并将结果保存在另一个对象中。我试图重载运算符+,但输出是相同的:类bblRac没有名为…的成员,而不是CRac。也许你的意思是res.rac.num
而不是res.num
?(otroRac.num和rac.num相同)。另外,成员rac是私有的,您将无法直接为otroRac对象访问它,也许您应该添加一个方法getRac()。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::ostream&operator,我想用这个函数将两个对象相加,并将结果保存在另一个对象中。我试图重载运算符+,但输出是相同的:类bblRac没有名为。。。