c++ 在函数中使用函数

c++ using functions within functions

我是 c++ 的新手,但我正在处理一个项目,处理对集合进行不同的操作,如果集合是有限的,其中一个只是打印出来。 SoS 是正在使用的对象,它仅代表一组字符串,并且具有一个字符串向量和一个布尔值作为其数据成员。我创建了一个函数来检查集合是否是有限的,我试图在我的打印函数中调用它,但我一直收到错误提示 "no member named "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;
}

C++ 与 C 一样,由于其单遍编译器设计的性质,需要前向声明。在 C++ 中,这通常不是问题,因为 class 在 .cpp 文件之前的头文件中已完全声明,但该错误消息表明您尚未充实 class 声明。

它应该是这样的(根据你的描述):

class SoS {
private:
    vector<string> m_vos;
    bool someBool;
public:
    void print() const;
    bool isFinite() const;
}

问题是您正试图在 std::vector<std::string> (m_vos) 上调用 SoS::isFinite()std::vector没有这样的成员。您只能在 SoS 类型的对象上或在 SoS 函数内调用 SoS::isFinite()

幸运的是,您在 SoS 函数中,因此您只需将代码更改为:

void SoS::print() const{
    // Calls SoS::isFinite()
    if (isFinite() == true){