Collect2: метод ссылки на ошибку без определения

#c 14

#c 14

Вопрос:

Я создаю базовую программу для составления списка, состоящего из объектов на c , я несколько раз просмотрел код и просто застрял, мой профессор не отвечает, и мне скоро придется включить это, если кто-нибудь может помочь мне найти, почему он говорит, что getTotal2020() не определено, когда ясно, что это так. Я компилирую со всеми файлами, и #include также присутствует во всех файлах.

Я пробовал разные способы доступа к этому методу, но каждый раз он выдает ошибки. По крайней мере, насколько у меня есть код сейчас, у меня нет никаких ошибок.

 class Data {

    public:
    Data(string neighborhood, int total2020, int numOfMen, int numOfWomen);
    string neighborhood;
    int total2020;
    int numOfMen;
    int numOfWomen;
    ~Data();
    string getNeighborhood();
    int getTotal2020();
    int getNumOfMen();
    int getNumOfWomen();
};

Data::Data(string neighborhood, int total2020, int numOfMen, int numOfWomen) {
    this->neighborhood;
    this->total2020;
    this->numOfMen;
    this->numOfWomen;
}

string getNeighborhood(string neighborhood){
    return neighborhood;
}

int getTotal2020(int total2020){
    return total2020;

}

int getNumMen(int numOfMen){
    return numOfMen;
}

int getNumOfWomen(int numOfWomen){
    return numOfWomen;
}

class Node{
    public:
    Node* next;
    Data* data;

    Node(Node* next, Data* data){
        this->next = next;
        this->data = data;
    }
    Node* getNode(){
        return next;
    }
    Data* getData(){
        return data;
    }
};

void List::findElement(int findMinPop){
    Node* aux;
    aux = head;
    while(aux){
      if(aux->getData()->getTotal2020() >= findMinPop){
        cout << "The population is greater" << endl;
      } else {
        cout << "The populations is less than you were looking for" << endl;
      }

      aux = aux->next;
    }
}
  

Ошибка заключается в том, что я:

 /tmp/ccJeheba.o:main.cpp:(.text 0x3ed): referencia a `Data::getTotal2020()' sin definir (that the method is not defined)
/tmp/ccJeheba.o:main.cpp:(.text 0x3ed): reubicación truncada para ajustar: R_X86_64_PC32 contra el símbolo `Data::getTotal2020()' sin definir
collect2: error: ld devolvió el estado de salida 1
  

Комментарии:

1. Вы определяете глобальную функцию , getTotal2020 не являющуюся членом. Вы правильно определили Data конструктор, используя правильную область видимости, что заставило вас сделать это неправильно для всех других функций-членов?

2. Хорошо, просто разобрался, если кто-нибудь может сказать мне, почему я должен поместить метод get внутри }; спасибо

3. @Someprogrammerdude что я сделал не так?

4. Вам не обязательно помещать функции встроенным образом в определение класса, все, что вам нужно сделать, это добавить в префикс имени имя класса и оператор области видимости. Как и в int Data::getTotal2020(int total2020){...} Вы должны были видеть, что это делается раньше, в книгах или руководствах или в вашем классе. Вы даже делаете это самостоятельно с помощью Data constructor ( Data::Data ).

5. когда я пытаюсь напечатать окрестности, я просто получаю пробелы, это результат, в котором население меньше, чем вы искали // здесь должно быть соседство, Население меньше, чем вы искали // и здесь население меньше, чем вы искали // и здесь