【发布时间】:2020-12-06 16:54:02
【问题描述】:
收到错误“无法引用“Library::Transaction”的默认构造函数——它是一个已删除的函数
错误发生在定义函数的文件的第 129 行
这是我的头文件“classes.h”
https://pastebin.com/94BBGF4U
#pragma once
class Library {
vector<Book> books;
vector<Patron> people;
public:
struct Transaction {
Book book;
Patron theMan;
Date chapDate;
};
vector<Transaction> transactions;
void add_Books_Lib(const Book& a) { books.push_back(a); }
void add_Patron_Lib(const Patron& a) { people.push_back(a); }
void check_Out(Patron & person, Book& a);
bool check_User(Patron& person);
bool check_Book(Book& a);
};
这是我定义函数的 cpp 文件
https://pastebin.com/gEF5s5Yc
#include "classes.h"
void Library::check_Out(Patron& person, Book& a){
if (check_Book(a) && check_User(person)) {
if (!person.check_If_Owes_Fee()) {
a.checkOut();
Transaction person.get_Patron_Name(); //error here
}
else cout << "Can't perform operation. User owes a fee";
}
else cout << "Invalid, user or book not in library";
}
如果它意味着什么,这里是主要的 cpp
#include "classes.h"
int main() {
Book one("123H", "Hey", "Cool", Date(31, 12, 2020), Genre::FICTION);
Book two("123H", "Hey", "Cool", Date(31, 12, 2020), Genre::CHILDREN);
operator<<(cout, one);
return 0;
}
【问题讨论】:
-
请将所有相关代码直接添加到问题中。
-
我会想象(不看代码)当不存在这样的构造函数时,您会隐式使用默认的 Transaction 构造函数。请在问题中输入相关代码。
-
欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后,请学习如何edit 你的问题来改进它们,例如包括你的代码的minimal reproducible example,以及你得到的实际错误的完整和完整的复制粘贴(作为文本!),使用 cmets在你得到它们的代码中。
-
添加相关代码
-
这行
Transaction person.get_Patron_Name();没有意义。你能解释一下你想在这里做什么吗?