首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用函数中的函数的c++

使用函数中的函数的c++
EN

Stack Overflow用户
提问于 2015-10-15 04:05:10
回答 2查看 75关注 0票数 1

我是c++的新手,但我正在做一个项目,处理对集合的不同操作,如果集合是有限的,其中一个简单地打印出来。SoS是正在使用的对象,它仅代表字符串集,并有一个字符串向量和一个布尔值作为数据成员。我创建了一个函数来检查这个集合是否是有限的,我试图在我的打印函数中调用它,但是我一直收到一个错误,说“没有成员名为”isFinite。

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-15 04:41:41

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

幸运的是,您在SoS函数中,因此您可以简单地将代码更改为:

代码语言:javascript
复制
void SoS::print() const{
    // Calls SoS::isFinite()
    if (isFinite() == true){
票数 0
EN

Stack Overflow用户

发布于 2015-10-15 04:11:11

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

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

代码语言:javascript
复制
class SoS {
private:
    vector<string> m_vos;
    bool someBool;
public:
    void print() const;
    bool isFinite() const;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33139701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档