我是c ++的新手,但我正在研究一个处理与集合进行不同操作的项目,其中一个只是在集合是有限的情况下打印出来的。 SoS是正在使用的对象,它只代表字符串集,并且有一个字符串向量和一个布尔值作为其数据成员。我创建了一个函数来检查集合是否是有限的,我试图在我的打印函数中调用它,但我不断收到错误,说“没有成员命名”是有限的。“继续我所拥有的,任何帮助都非常感谢。
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;
}
答案 0 :(得分:4)
它应该是这样的(根据你的描述):
class SoS {
private:
vector<string> m_vos;
bool someBool;
public:
void print() const;
bool isFinite() const;
}
答案 1 :(得分:0)
问题是您试图在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){