пытается сделать это назначение колледжа с множественным наследованием. Вот класс Student, который предполагается использовать MI:Получить ошибки при множественном наследовании C++
#include "Person.h"
#include "Studying.h"
#include "StudentRoll.h"
class Student : public Person, public Studying {
private:
int mathScore;
public:
Student(string n,int b,int i,int c,double a):Person(n,b),Studying(i,c,a){}
string toString();
friend class StudentRoll;
};
А вот его предки:
#include <string>
using namespace std;
class Person {
private:
string name;
int birthYear;
public:
Person() :name(""), birthYear(1900){}
Person(string n, int y);
void setBirthYear(int y);
string toString();
};
using namespace std;
class Studying {
private:
int id;
int course;
double average;
public:
Studying():id(0),course(1),average(3.0){}
Studying(int i, int c, double a):id(i),course(c),average(a){}
void setCourse(int c);
string toString();
};
Я получаю некоторые странные ошибки с следующим классом
#pragma once
#include "Student.h"
#include <vector>
#include <iostream>
using namespace std;
class StudentRoll {
private:
vector<Student> students;
public:
void push(Student s);
void pop();
void show();
};
И вот ошибки:
Код серьезности Описание Строка файла проекта Ошибка C2923 'std :: vector': 'Student' не является допустимым аргументом типа шаблона для параметра '_Ty' lab3 i: \ onedrive \ uni \ oop \ lab3 \ lab3 \ studentroll.h 10
Код серьезности Описание Строка файла проекта Ошибка C3867 'std :: vector> :: size': нестандартный синтаксис; использование '&', чтобы создать указатель на lab3 членов я: \ onedrive \ уни \ уп \ lab3 \ lab3 \ studentroll.cpp 17
Тяжесть Code Line Описание проекта Файл Ошибка C2065 'Student': необъявленная lab3 идентификатор я: \ onedrive \ уни \ уп \ lab3 \ lab3 \ studentroll.h 10
Тяжесть Code Line Описание проекта Файл Ошибка C2248 'Student :: mathScore': не может получить доступ к закрытому члену, объявленный в классе lab3 'Студенческая' я: \ onedrive \ uni \ oop \ lab3 \ lab3 \ studentroll.cpp 22
Код серьезности Описание Файл файла проекта Ошибка синтаксиса C2061: идентификатор 'S tudent 'lab3 i: \ onedrive \ uni \ oop \ lab3 \ lab3 \ studentroll.h 12
Я могу включить cpps в случае необходимости. Пожалуйста, помогите
У вас есть круговая зависимость между 'Student.h' и' StudentRoll.h'. См. Http://stackoverflow.com/questions/625799/resolve-circular-dependencies-in-c. –
Обратите внимание: вы никогда не должны ставить 'использование пространства имен std;' в заголовок. –
Некоторые советы: начните с удаления всех 'using namespace std;', прочитайте о том, почему [здесь] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) , Вы также можете прочитать о включении охранников [здесь] (http://stackoverflow.com/questions/8020113/c-include-guards). – sweerpotato