gpt4 book ai didi

c++ - 被隐式删除,因为默认定义的格式不正确 :

转载 作者:行者123 更新时间:2023-11-27 23:46:53 27 4
gpt4 key购买 nike

我正在创建一个读取文件并对文件中的数据做一些事情的项目:

NameSurferDataBase.cpp

#ifndef NAMESURFERDATABASE_CPP
#define NAMESURFERDATABASE_CPP
#include "NameSurferDataBase.h"
#include "linked_list.h"
#include <iostream>
#include <list>
#include <cstdlib>
#include <vector>
#include <iostream>
#include <fstream>
#include <string>
#include <ostream>
#include <sstream>
#include <iomanip>
#include <istream>
#include <cstdio>

using namespace std;

NameSurferDataBase::NameSurferDataBase(string filename){
getNameData(filename);
}

void NameSurferDataBase::getNameData(string filename){
ifstream input;
input.open(filename);
if(!input.is_open()){
cout << "Not Open";
}else{
string temp;
while(input.is_good()){
getline(input,temp);
if(!input.eof()){
NameSurferEntry entry(temp);
database.InsertInOrder(entry);
}
}
}
}

NameSurferEntry NameSurferDataBase::findEntry(string name){
NameSurferEntry temp(name);
if(database.Search(temp) == true){
return temp;
} else{
cout << "Name not found" << endl;
}
}
#endif

NameSurferDataBase.h

#ifndef NAMESURFERDATABASE_H
#define NAMESURFERDATABASE_H
#include "NameSurferEntry.h"
#include "linked_list.h"
#include <iostream>
#include <list>
#include <string>

class NameSurferDataBase {
public:
NameSurferDataBase(string filename);
void getNameData(string filename);
NameSurferEntry findEntry(string name);
private:
linked_list<NameSurferEntry> database;
};
#endif

每当我尝试编译时,我的 main 代码中的这一行都会出现以下错误:

NameSurferDataBase namesdb = NameSurferDataBase("NamesData.txt");
main.cpp: In function ‘int main()’:main.cpp:19:67: error: use of deleted function ‘NameSurferDataBase::NameSurferDataBase(NameSurferDataBase&&)’    NameSurferDataBase namesdb = NameSurferDataBase("NamesData.txt");                                                                       ^In file included from main.cpp:5:0:NameSurferDataBase.h:11:7: note: ‘NameSurferDataBase::NameSurferDataBase(NameSurferDataBase&&)’ is implicitly deleted because the default definition would be ill-formed: class NameSurferDataBase {       ^~~~~~~~~~~~~~~~~~NameSurferDataBase.h:11:7: error: invalid initialization of non-const reference of type ‘linked_list<NameSurferEntry>&’ from an rvalue of type ‘linked_list<NameSurferEntry>’

为什么说我的构造函数格式错误?

最佳答案

您正在构建一个临时的 NameSurferDataBase 并将其移动到 namesdb 中。由于您使用 linked_list,因此无法生成默认移动构造函数,这可能会禁止移动。

直接构造namesdb,它应该可以工作,例如:

NameSurferDataBase namesdb("NamesData.txt");

关于c++ - 被隐式删除,因为默认定义的格式不正确 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49826420/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com