获取错误没有匹配函数来调用' '

时间:2014-11-12 04:02:21

标签: c++ pointers operators destructor

这些是我从我的一个功能中获得的错误,似乎无法找出导致它的原因。我认为这一行导致了错误

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;
}
}

1 个答案:

答案 0 :(得分:2)

您在}之前错过了return *this;,因此编译器无法正确解析您的析构函数代码。通常,如果您有任何与括号或括号不匹配相关的错误,请先修复它们。它还有助于使用适当的缩进,以便您可以直观地匹配大括号。