C++ - error: class has not been declared/out of scope

C++ - error: class has not been declared/out of scope

所以我有两个 classes - Dvd 和 DvdGroup。 DvdGroup 基本上管理一个 dvd 数组并为该数组提供可操作的成员函数 class。问题是每当我尝试使用命令 'g++ -c Dvd.Group.cc' 编译 DvdGroup.cc 时,我都会收到一堆与未声明 [​​=36=] 有关的错误,我不确定为什么。

下面是一些错误:

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 class,但我似乎无法弄清楚是什么。我想知道是否有人可以告诉我我做错了什么?如果能帮我解决这个问题,我将不胜感激。

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

您需要做的是为 DvdGroup class 提供 Dvd class 定义。需要知道这是什么类型的符号。您的问题的解决方案应该是添加:

#include "Dvd.h"

行到 DvdGroup.h 文件。