这些是我从我的一个功能中获得的错误,似乎无法找出导致它的原因。我认为这一行导致了错误
if(this != &gardena){ //shallow copy
请帮助
编译器错误:
Garden.cpp:59:17: error: no matching function for call to ‘Garden::~Garden()’
Garden.cpp:59:17: note: candidate is:
Garden.h:17:2: note: Garden::~Garden()
Garden.h:17:2: note: candidate expects 1 argument, 0 provided
Garden.cpp:59:18: error: expected ‘;’ before ‘{’ token
Garden.cpp:122:1: error: expected ‘}’ at end of input
Garden& Garden::operator=(const Garden& gardena){
if(this != &gardena){ //shallow copy
gmap_width = gardena.gmap_width;
gmap_length = gardena.gmap_length;
if(gardena.garden != nullptr){
delete [] garden;
garden = nullptr;
}
if(gardena.garden != nullptr){ //deep copy
garden = new char[strlen(gardena.garden)];
strcpy(garden, gardena.garden);
}else{
garden = nullptr;
}
return *this;
}
Garden::~Garden(){
if(garden != nullptr){
delete [] garden;
}
}
答案 0 :(得分:2)
您在}
之前错过了return *this;
,因此编译器无法正确解析您的析构函数代码。通常,如果您有任何与括号或括号不匹配相关的错误,请先修复它们。它还有助于使用适当的缩进,以便您可以直观地匹配大括号。