当我声明非成员函数listOverview()时出错;
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()的成员;
这是我的标题:
#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发布于 2016-01-07 10:55:44
当您要定义作为类的一部分的函数时。你需要明确地做这件事。
而不是
void listOverview()它应该是
void Bibliography::listOverview()发布于 2016-01-07 10:57:02
如果listofOverview是一个空闲函数,那么在参数内或通过参数传递的books都不存在(不,您不想使用全局变量)。
如果您认为它是类成员,则应该编写void Bibliography::listOfOverview(),但它是类成员而不是免费函数。
https://stackoverflow.com/questions/34653300
复制相似问题