我是c++的新手,但我正在做一个项目,处理对集合的不同操作,如果集合是有限的,其中一个简单地打印出来。SoS是正在使用的对象,它仅代表字符串集,并有一个字符串向量和一个布尔值作为数据成员。我创建了一个函数来检查这个集合是否是有限的,我试图在我的打印函数中调用它,但是我一直收到一个错误,说“没有成员名为”isFinite。
void SoS::print() const{
if (m_vos.isFinite() == true){
for (int i = 0; i < m_vos.size(); i++){
cout << m_vos[i]<< endl;
}
}
else{
cout << "COMPLEMENT OF:"<< endl;
for (int i = 0; i< m_vos.size(); i++){
cout << m_vos[i]<< endl;
}
}
}
bool SoS::isFinite() const{
if (isfinite(m_vos.size()){
return true;
}
return false;
}发布于 2015-10-15 04:41:41
问题是,您正在尝试在SoS::isFinite()上调用std::vector<std::string> (m_vos)。std::vector没有这样的成员。只能对类型为SoS::isFinite()的对象或在SoS函数中调用SoS。
幸运的是,您在SoS函数中,因此您可以简单地将代码更改为:
void SoS::print() const{
// Calls SoS::isFinite()
if (isFinite() == true){发布于 2015-10-15 04:11:11
C++和C一样,由于其单通道编译器设计的性质,需要进行前向声明.在C++中,这通常不是问题,因为类是在.cpp文件之前在头文件中完全声明的,但是该错误消息表明您还没有充实类声明。
它应该是这样的(根据您的描述):
class SoS {
private:
vector<string> m_vos;
bool someBool;
public:
void print() const;
bool isFinite() const;
}https://stackoverflow.com/questions/33139701
复制相似问题