首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >名称、论文、书籍未在此范围内声明为非会员函数C++。

名称、论文、书籍未在此范围内声明为非会员函数C++。
EN

Stack Overflow用户
提问于 2016-01-07 10:52:48
回答 2查看 148关注 0票数 0

当我声明非成员函数listOverview()时出错;

代码语言:javascript
复制
  void listOverview()
  {

  std::cout << "Overview of books of " << name << std::endl;
  for (auto p : books)
    {
    std::cout << p.toString() << std::endl;
    }
  std::cout << "Overview of papers of " << name << std::endl;
  for (auto p : papers)
    {
    std::cout << p.toString() << std::endl;
    }
  }

编译器表示在此范围内未声明名称、论文和书籍。我试过几种方法,比如结交函数朋友,但总的来说,它说类书目没有一个名为listOverview()的成员;

这是我的标题:

代码语言:javascript
复制
#ifndef BIBLIOGRAPHY_H
#define BIBLIOGRAPHY_H
#include <string>
#include <vector>


class Book;
class Paper;

class Bibliography
  {
  public:
    Bibliography(const std::string & aName);

    void addBook(const Book * newBook);
    void addPaper(const Paper *newPaper);
    int giveNrOfBooks() const {return books.size();}
    int giveNrOfPapers() const {return papers.size();}
    void listOverview();
//    std::vector<std::shared_ptr<Publication>> givePubWithIFHigherThan(float value) const;
//    void replaceIFofJournalsMatching(const std::regex journal, float newIF);
  private:
    const std::string name;
    std::vector<const Book *> books;
    std::vector<const Paper *> papers;

  };

#endif // BIBLIOGRAPHY_H
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-07 10:55:44

当您要定义作为类的一部分的函数时。你需要明确地做这件事。

而不是

代码语言:javascript
复制
void listOverview()

它应该是

代码语言:javascript
复制
void Bibliography::listOverview()
票数 1
EN

Stack Overflow用户

发布于 2016-01-07 10:57:02

如果listofOverview是一个空闲函数,那么在参数内或通过参数传递的books都不存在(不,您不想使用全局变量)。

如果您认为它是类成员,则应该编写void Bibliography::listOfOverview(),但它是类成员而不是免费函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34653300

复制
相关文章

相似问题

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