с++ Перенос функций класса в отдельный файл
Есть файл Student.h:
#pragma once
#include <iostream>
#include <fstream>
#include <string>
class Student {
private:
Fio fio;
BirthDate birth_date;
AdmissionYear admission_year;
Faculty faculty;
Department department;
Group group;
StudentBookNumber studentbook_number;
Sex sex;
public:
void getSurname();
void getName();
void getPatronymic();
void getBirthDate();
void getAdmissionYear();
void getFaculty();
void getDepartment();
void getGroup();
void getStudentbookNumber();
void getSex();
void writeStudent();
void printStudent();
int writeIntoFile(string surname_, string name_, string patronymic_, int birth_date_day_,
int birth_date_month_, int birth_date_year_, int admission_year_,
string faculty_, string department_, string group_, string studentbook_number_, string sex_);
int readFromFile(int required_number);
void editStudent(Student* student, int student_count);
void deleteStudent(Student* student, int student_count);
};
void Student::getSurname() {...}
void Student::getName() {...}
void Student::getPatronymic() {...}
void Student::getBirthDate() {...}
void Student::getAdmissionYear() {...}
void Student::getFaculty() {...}
void Student::getDepartment() {...}
void Student::getGroup() {...}
void Student::getStudentbookNumber() {...}
void Student::getSex() {...}
void Student::writeStudent() {...}
void Student::printStudent() {...}
int Student::writeIntoFile(string surname_, string name_, string patronymic_, int birth_date_day_,
int birth_date_month_, int birth_date_year_, int admission_year_,
string faculty_, string department_, string group_, string studentbook_number_, string sex_) {...}
int Student::readFromFile(int requirement_number) {...}
void Student::deleteStudent(Student* student, int student_count) {...}
void Student::editStudent(Student* student, int student_count) {...}
Хочу перенести функции (начиная с getSurname() заканчивая editStudent()) в файл Student.cpp. Перекидываю функции, прописав в начале Student.cpp файла #include "Student.h", но компилятор выдаёт ошибки:
error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl Student::writeStudent(void)" (?writeStudent@Student@@QEAAXXZ) в функции main.
error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl Student::printStudent(void)" (?printStudent@Student@@QEAAXXZ) в функции main.
error LNK2019: ссылка на неразрешенный внешний символ "public: int __cdecl Student::readFromFile(int)" (?readFromFile@Student@@QEAAHH@Z) в функции main.
error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl Student::editStudent(class Student *,int)" (?editStudent@Student@@QEAAXPEAV1@H@Z) в функции main.
error LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl Student::deleteStudent(class Student *,int)" (?deleteStudent@Student@@QEAAXPEAV1@H@Z) в функции main.
1>C:\Users\username\Desktop\work\x64\Debug\work.exe : fatal error LNK1120: неразрешенных внешних элементов: 5
В main функции вызываю так:
...
student[student_count].writeStudent();
student[i].printStudent();
student[i].readFromFile(i);
student->editStudent(student, student_count);
student->deleteStudent(student, student_count);
...
Как правильно перекинуть функции класса в другой файл?
Если объявлять функции в Student.h, то всё прекрасно работает, а если сделать, как я хочу уже не работает
Источник: Stack Overflow на русском