类不存在默认构造函数
Posted
技术标签:
【中文标题】类不存在默认构造函数【英文标题】:No default constructor exists for a class 【发布时间】:2020-03-20 22:00:41 【问题描述】:运行程序时出现以下错误:
“DynamicArray”
'DynamicArray':没有合适的默认构造函数可用。
你能帮帮我吗?
Repository.h
class Repository
private:
DynamicArray Repository_Dogs;
public:
Repository(int capacity , int Size_Dogs_List);
;
Dog::Dog(char* name, char* breed, char* birth_date, char* vaccinations_counter, char* photograph)
strcpy(this->Name, name);
strcpy(this->Breed, breed);
strcpy(this->Birth_Date, birth_date);
strcpy(this->Vaccinations_Counter, vaccinations_counter);
strcpy(this->Photograph, photograph);
存储库.cpp
Repository::Repository(int capacity , int size_Dogs_List)
DynamicArray newDynamicArray = DynamicArray(capacity,size_Dogs_List);
this->Repository_Dogs = newDynamicArray;
DynamicArray.cpp
DynamicArray::DynamicArray(int capacity, int size_Dogs_List)
this->Capacity_List = capacity;
this->Size_Dogs_List = size_Dogs_List;
this->Dogs_List = (Dog*)malloc(this->Capacity_List * sizeof(Dog));
DynamicArray.h(构造函数)
public:
DynamicArray(int capacity, int Size_Dogs_List);
【问题讨论】:
【参考方案1】:像这样定义构造函数
Repository::Repository(int capacity , int size_Dogs_List)
: Repository_Dogs( capacity, size_Dogs_List )
并且使用运算符 new 代替 C 函数 malloc。
【讨论】:
new Dog[100] 不起作用,我应该如何分配内存? @VladGhetina 我无法回答,因为我没有足够的信息,例如为什么它不起作用。 Dog 类是否有默认构造函数? @VladGhetina Dog 类没有默认构造函数。您可以使用placement new 运算符,但我认为您还不知道......以上是关于类不存在默认构造函数的主要内容,如果未能解决你的问题,请参考以下文章