Итак, у меня есть два класса - Dvd и DvdGroup. DvdGroup в основном управляет массивом dvds и предоставляет манипулятивные функции-члены для этого класса. Проблема заключается в том, что всякий раз, когда я пытаюсь скомпилировать DvdGroup. cc с помощью команды «g ++ - c Dvd.Group. cc», я получаю кучу ошибок, связанных с тем, что не объявлен «Dvd», и я не знаю почему.
Ниже приведены некоторые ошибки:
DvdGroup.h: 14: 12: ошибка: 'Dvd' не был объявлен void add (Dvd *);
DvdGroup.h: 18: 3: ошибка: «Dvd» не называет тип Dvd * dvdCollection [MAX_DVDS];
DvdGroup. cc: в конструкторе копирования 'DvdGroup :: DvdGroup (DvdGroup &) ':
DvdGroup. cc: 15: 6: ошибка:' Dvd 'не был объявлен в этой области для (Dvd d: dvds) {
Мне кажется, что я пропал что-то, и все они могут быть исправлены одним решением, потому что все они связаны с необъявленным классом DVD, но я не могу понять, что именно. Мне было интересно, если кто-нибудь может сказать мне, что я делаю не так? Я был бы очень признателен за любую помощь в исправлении этого.
DvdGroup. cc:
#include <iostream>
using namespace std;
#include "DvdGroup.h"
DvdGroup::DvdGroup(int n){
numDvds = n;
}
DvdGroup::DvdGroup(DvdGroup& dvds){
numDvds = dvds.numDvds;
for(Dvd d: dvds){
Dvd newDvd = Dvd;
}
}
DvdGroup::~DvdGroup(){
//code
}
void DvdGroup::add(Dvd* d){
//code
}
DvdGroup.h:
#ifndef DVDGROUP_H
#define DVDGROUP_H
#define MAX_DVDS 15
#include <string>
using namespace std;
class DvdGroup
{
public:
DvdGroup(int);
DvdGroup(DvdGroup&);
~DvdGroup();
void add(Dvd*);
private:
Dvd* dvdCollection[MAX_DVDS];
int numDvds;
};
#endif
Не знаю, если Заголовочный файл Dvd необходим, но здесь:
Dvd.h:
#ifndef DVD_H
#define DVD_H
#define MAX_DVDS 15
#include <string>
class Dvd{
public:
Dvd(string, int);
void set(string, int);
Dvd(Dvd&);
int getYear();
~Dvd();
void print();
private:
string title;
int year;
};
#endif