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 文件。
所以我有两个 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 文件。