c ++使用函数内的函数

时间:2015-10-15 04:05:11

标签: c++ function set

我是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;
}

2 个答案:

答案 0 :(得分:4)

与C一样,C ++由于其单通道编译器设计的性质而需要前向声明。在C ++中,这通常不是问题,因为在.cpp文件之前的头文件中完全声明了一个类,但是该错误消息表明你没有充实你的类声明。

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

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_vosstd::vector没有这样的成员。您只能在SoS::isFinite()类型的对象或SoS函数内调用SoS

幸运的是,您处于SoS功能范围内,因此您只需将代码更改为:

即可
void SoS::print() const{
    // Calls SoS::isFinite()
    if (isFinite() == true){
相关问题