Помогите underfined reference to ко всем методам

С чем может это может быть связано?
Пытался разобраться с 11 уроком.

#include <iostream>
#include <students.h>

using namespace std;

int main(){
    setlocale(0,"");
    string name;
    string lastname;


cout<<"Имя: ";
    getline(cin,name);

    cout<<"Фамилия: ";
    getline(cin,lastname);

    Students *student = new Students(name,lastname) ;

    student->setName(name);
    student->setLName(lastname);

    int score[5];
    float sum = 0;

    for (int i = 0;i<5;i++){
        cout<<i+1<<"-ая Оценка ";
        cin>>score[i];
    sum += score[i];
    }
    student->setScore(score);

    float avverageBall = sum/5;

    student->Avverage(avverageBall);

    cout<<"Средний бал для ученика "<<student->getName()<<" "
    <<student->getLName()<<" "
    <<student->getAvverage()<<endl;
    delete student;
    return 0;
} 
#include <string>
#include <fstream>
#include "students.h"

using namespace std;

class Students{
    public:
    Students::Students(string name, string lastname){
        Students::setName(name) ;
        Students::setLName(lastname) ;
    }

        void Students::setName(string name1){
        Students::name = name1;
    }

        void Students::setLName(string lName){
        Students::lastname = lName;
    }

        string Students::getName(){
        return Students::name;
    }
    string Students::getLName(){
        return Students::lastname;
        }


    int Students::setScore(int score[]){
        for (int i = 0;i<5;i++){
        Students::score[i] = score[i];
        }
    }
    void Students::Avverage(float avverageBall){
        Students::avverageBall = avverageBall;
    }
    float Students::getAvverage(){
        return Students::avverageBall;
        }
};

students.h

#pragma once
#include <string>

using namespace std;

class Students{
    public:
    Students(string, string);

    void setName(string);

    void setLName(string);

    string getName() ;

    string getLName() ;

    void setScore(int [ ]);

    void Avverage(float) ;

    float getAvverage() ;

    private:
    int score[5];
    string name;
    string lastname;
    float avverageBall;
};

В файле students.cpp не нужно объявление класса. Класс ты объявил в students.h. А в students.cpp ты должен поместить только определения (реализации) методов класса, которые не определены в students.h.

Кроме того, метод setScore в объявлении класса возвращает void, а в реализации int. Сигнатуры методов должны совпадать в объявлении и в реализации.

И ещё в файле с функцией main в строке #include <students.h> лучше использовать двойные кавычки: #include "students.h". Скорее всего это не смертельно (зависит от компилятора), но лучше начинать искать students.h с каталога проекта, а не с каталогов компилятора.

Ещё можно почитать (1) статью «Раздельная компиляция программ на C++» для общего понимания и (2) статью «Символы кириллицы в консоли Windows» для подавления вопросов по поводу вывода символов кириллицы в фамилиях учеников.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.