Не могу создать структуру

451
23 июля 2021, 07:30

Не могу создать переменную структуру. Если мы объявляем структуру в том же файле где и main функция, то все инициализируется нормально. Я вынес структуру в отдельный файл, прописал структуру в заголовочный файл который ссылается на файл с структурой и подключил к основному файлу. Может я как то не правильно подключаю файл, хотя до этого функции из других файлов видел. Но все равно не могу инициализировать переменную структуры. Прилагаю код файлов: University_Task_7.cpp

#include "University_Task_7.h"
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <sstream>
#pragma warning(disable:4996);
struct Student
{
public:
    Student(std::string surname, int group, int year, int phys, int math, int computer_science)
    {
        this->Surname = surname;
        this->year_of_birthday = year;
        this->number_group = group;
        rate.computer_science = computer_science;
        rate.math = math;
        rate.phys = phys;
        average_mark = (phys + math + computer_science) / 3.0;
    }
    struct rating
    {
        int phys;
        int math;
        int computer_science;
    };
    std::string Surname;
    int year_of_birthday;
    int number_group;
    double average_mark;
    rating rate;
};
void Creating(char path[], char mode[])
{
    try
    {
        FILE* file;
        file = fopen("text.txt", "w+t");
        fclose(file);
        delete file;
    }
    catch (int a)
    {
        std::cout << "Error number " + a;
    }
}
void AddInFile(Student student, char path[], char mode[], char filename[])
{
    std::string path = strcat(path, filename);
    std::string stud = "Фамилия: " + student.Surname + "\n";
    stud += "Номер группы: " + student.number_group;
    stud += "Физика: " + student.rate.phys;
    stud += "Математика: " + student.rate.math;
    stud += "Информатика: " + student.rate.computer_science;
    stud += "Средний бал: " + std::to_string(student.average_mark);
    std::ofstream file;
    file.open(path);
    if (file.is_open())
        file << stud;
}
void View(int group, std::string path)
{
}

University_Task_7.h

#ifndef UNIVERSITY_TASK_7
#define UNIVERSITY_TASK_7
struct Student;
void Creating(char path[], char mode[]);
#endif

UniversityTasks.cpp

#include <iostream>
#include "University_Task_2.h"
#include "University_Task_3.h"
#include "University_Task_4.h"
#include "University_Task_5.h"
#include "University_Task_6.h"
#include "University_Task_7.h"
const double PI = 3.1415926;
int main()
{
system("color 70");
setlocale(LC_ALL, "Russian");
Student student = new Student();

char path[256];
std::cin >> path;
char mode[3];
std::cin >> mode;
Creating(path,mode);
system("pause");
return 0; 
}
Answer 1

Брр. UniversityTasks.cpp знает только, что есть какая-то структура Student, но какая - ему неизвестно.

В заголовочный файл следует вынести полное (не предварительное!) объявление

struct Student
{
public:
    Student(std::string surname, int group, int year, int phys, int math, int computer_science)
    {
        this->Surname = surname;
        this->year_of_birthday = year;
        this->number_group = group;
        rate.computer_science = computer_science;
        rate.math = math;
        rate.phys = phys;
        average_mark = (phys + math + computer_science) / 3.0;
    }
    struct rating
    {
        int phys;
        int math;
        int computer_science;
    };
    std::string Surname;
    int year_of_birthday;
    int number_group;
    double average_mark;
    rating rate;
};
READ ALSO
Удаление Sprite со сцены cocos2d-x

Удаление Sprite со сцены cocos2d-x

При удалении спрайта функциями this->removeChild(sprite,true); или this->removeChildByTag(1) или sprite->removeFromParent(); вылетает играВ чём заключается проблема? Вроде...

223
Нужен SD_SEND для UDP соединения?

Нужен SD_SEND для UDP соединения?

Есть такой код, как я понял он полностью отключает соединения, мне интересно для чего его используют в UDP сетиИли его вообще не используют...

267
Как передать указатель в другую функцию с++?

Как передать указатель в другую функцию с++?

В С++ я полный ноль, начал изучать по нужде буквально сутки назадЕсть проблема

226
Чтение первых двух слов строки файла

Чтение первых двух слов строки файла

Столкнулся с такой проблемойМне необходимо записать слова в два массива

337