如何解决在函数内的类内创建结构时遇到麻烦
收到错误“无法引用“ Library :: Transaction的默认构造函数”-它是已删除的函数
该错误发生在定义函数的文件的第129行
这是我的头文件“ classes.h”
LockSupport.unpark(waitingFuture.thread)
这是我定义功能的cpp文件
_mondayStartTime = startDate.Date; //I know this is monday due to grid filters
_mondayEndTime = _mondayStartTime.AddDays(1).AddMilliseconds(-1);
_tuesdayStartTime = startDate.AddDays(1).Date;
_tuesdayEndTime = _tuesdayStartTime.AddDays(1).AddMilliseconds(-1);
...
monday = context.Entites.Where(x=> _mondayStartTime <= x.Date && x.Date <= _mondayEndTime ).Sum(s => s...);
如果有任何含义,这是主要的cpp
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);
};
解决方法
您的结构struct Transaction
不包含默认构造函数。为什么?通常,如果您的结构不包含任何构造函数,并且可以使用相应的默认构造函数初始化结构的所有字段,则编译器会自行添加它。但是,结构Book
没有默认构造函数,但具有非默认构造函数。因此,编译器不会向Book
添加默认构造函数。因此,两者都不适用。
因此,您可以为Transaction
显式定义一个默认构造函数(不带参数),并在.book
字段中插入汽车。或者,您为Book
定义默认的构造函数。
Transaction
和Book
都具有可访问的默认构造函数,否则 Patron
将不会收到自动生成的默认构造函数。
就其价值而言,如果Date
和std::vector
类也没有默认构造函数,则可能无法使用Book
中的某些方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。