у меня есть структура списка:
typedef struct FaceNode{
FaceNode *next;
Face *aFace;
FaceNode *prev;
} FaceNode;
Я использую эту структуру в качестве члена:
FaceNode *myFaces;
и инициализировать его так (в конструкторе)
this->myFaces = (FaceNode*)malloc(sizeof(FaceNode)*1);
Позже я хочу освободить его следующим образом:
FaceNode *theCurrentFaceNode;
Face* theCurrentFace;
while(this->myFaces->next){
theCurrentFaceNode = this->myFaces;
theCurrentFace = theCurrentFaceNode->aFace;
this->myFaces = this->myFaces->next;
free(theCurrentFace);
free(theCurrentFaceNode);
}
Теперь моя IDE говорит мне: «Ошибка, слишком много аргументов в вызове функции» для свободного вызова.
Что в этом плохого?
ура
Вы, очевидно, объявили собственную функцию с именем free
и компилятор обнаруживает, что вместо того, который, как вы думали, вы вызывали. Используйте оператор разрешения области для вызова глобальной функции:
::free(theCurrentFace);
Или найти другой free
функция и дать ему другое имя. Это может быть член класса, который вы реализуете; посмотрите на классы предков класса тоже.
Других решений пока нет …