【发布时间】:2021-12-25 21:36:46
【问题描述】:
代码应该从 .h 文件中获取类,并在主文件中使用它来创建自定义宠物概要,稍后可以将其存储在另一个文本文件中。我还没有对文本文件进行模块化提取,因为我至少需要让它工作并且能够实际编译和返回构成自定义宠物概要的不同数组。
每当我运行代码时,它都会读取以下错误:
program3.cpp:5:21: error: cannot call constructor ‘dog_list::dog_list’ directly [-fpermissive]
5 | dog_list::dog_list() = default;
| ^
program3.cpp:5:21: note: for a function-style cast, remove the redundant ‘::dog_ list’
program3.cpp:5:25: error: expected primary-expression before ‘default’
5 | dog_list::dog_list() = default;
| ^~~~~~~
program3.cpp:6:22: error: no matching function for call to ‘dog_list::~dog_list( )’
6 | dog_list::~dog_list() = default;
| ^
program3.h:12:2: note: candidate: ‘dog_list::~dog_list()’
12 | ~dog_list();
| ^
program3.h:12:2: note: candidate expects 1 argument, 0 provided
program3.cpp:6:26: error: expected primary-expression before ‘default’
6 | dog_list::~dog_list() = default;
| ^~~~~~~
我的 .h 文件:
#include<iostream>
#include<cstring>
#include<cctype>
#include<fstream>
using namespace std;
const int SIZE = 20;
const int END = 11;
class dog_list
{
public:
dog_list();
~dog_list();
void record_pets();
private:
char name[SIZE];
char breed[SIZE];
char species[SIZE];
char service[SIZE];
char special[SIZE];
};
void record_pets();
我的主 .cpp 文件:
#include "program3.h"
int main()
{
op.record_pets();
return 0;
}
void dog_list::record_pets()
{
char personal_list[SIZE];
int i = 0;
char again;
do
{
cout << "Enter in pets name: ";
cin.get(op.name,25,'\n');
cin.ignore(100,'\n');
cout << endl << "Enter breed of pet: ";
cin.get(op.breed, 25, '\n');
cin.ignore(100,'\n');
cout << endl << "Enter species: ";
cin.get(op.species,25,'\n');
cin.ignore(100,'\n');
cout << endl << "Enter in service qualifications: ";
cin.get(op.service,25,'\n');
cin.ignore(100,'\n');
cout << endl << "Enter in special notes: ";
cin.get(op.special,25,'\n');
cin.ignore(100,'\n');
cout << endl;
cout << "Name: " << op.name << endl;
cout <<"Breed: " << op.breed << endl;
cout << "Species: " << op.species << endl;
cout << "Service Qualifications: " << op.service << endl;
cout << "Special Notes: " << op.special << endl;
cout << "Pet saved! Would you like to enter another pet? Y/N: " << endl;
cin >> again;
cin.ignore(100,'\n');
cout << endl;
if(again == 'y')
{
again = toupper(again);
}
}while(again == 'Y' && i <= END);
{
++i;
}
}
【问题讨论】:
-
嗨冬青,我只是好奇你在哪里添加的
-
(有点)类似的问题:stackoverflow.com/questions/69960187/…
-
没关系,我测试的代码不正确。 :/ 至少还有一个 .cpp 文件您没有向我们展示。
标签: c++ class constructor