首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有匹配的函数用于调用'Book::Book()‘

没有匹配的函数用于调用'Book::Book()‘
EN

Stack Overflow用户
提问于 2013-06-07 12:43:22
回答 3查看 546关注 0票数 1

我正在为一个麻省理工学院的开放式课程做一些事情,它要求写一个‘库’类。现在我有这样的想法:

代码语言:javascript
复制
#include <iostream>

using namespace std;

class Book{
    string title;
    bool rented;
public:
    Book(string bookTitle){
        title = bookTitle;
    }
    void borrowed(){
        rented = true;
    }
    void returned(){
        rented = false;
    }
    bool isBorrowed(){
        return rented;
    }
    string getTitle(){
        return title;
    }
};

class Library{
    string Lname;
    Book bookList[100000000];
    int numOfBooks = 0;
public:
    Library(string name){
        Lname = name;
    }
    void addBook(string bookName){
        bookList[numOfBooks] = Book(bookName);
        numOfBooks += 1;
    }
    void returnInfo(){
    cout << "Library hours:" << "\n" << "Libraries are open daily from 9am to 5pm." << "\n" << "Library addresses:" << "\n" << "10 Main St." << "\n" << "228 Liberty St.";
    }

};
int main()
{
    Library l = Library("Hi");
    return 0;
}

当我编译它的时候,我得到了一个错误:没有匹配的函数来调用第35行的'Book::Book()‘。

EN

回答 3

Stack Overflow用户

发布于 2013-06-07 12:46:45

编译器抱怨你还没有为Book定义默认构造函数,你可以尝试这样做:

代码语言:javascript
复制
 explicit Book(const string& bookTitle = std::string("")) 
 : title(bookTitle) 
 {
 }

在堆栈上定义100000000我的原因溢出,

代码语言:javascript
复制
Book bookList[100000000];

请尝试使用向量

代码语言:javascript
复制
std::vector<Book> bookList;

在addBook中,您可以简单地使用std::vector::push_back添加一本新书。要获取图书总数,请使用std::vector::size()

代码语言:javascript
复制
void addBook(const string& bookName){
    bookList.push_back(Book(bookName));
}

建议:

通过const

  • reference传递参数给像std::这样的函数是一种更好的方法。如果可能,请使用成员初始化列表

代码语言:javascript
复制
 Library(const string& name) : Lname(name) {  }
 void addBook(const string& bookName){ }
票数 2
EN

Stack Overflow用户

发布于 2013-06-07 12:51:32

代码语言:javascript
复制
Book bookList[100000000]; 

将尝试使用默认构造函数创建100000000对象。

票数 0
EN

Stack Overflow用户

发布于 2013-06-07 12:58:37

bookList被创建为对象数组,而不是字符串数组,然后将strings(bookName)赋值给bookList,所以我认为问题出在这里。

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

https://stackoverflow.com/questions/16976367

复制
相关文章

相似问题

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