我花了很多时间在线寻找我的问题的答案,但没有找到任何答案。不幸的是,我必须在班上落后。
我的任务要求我建立一个校园课程,“校园必须有2个阵列的每种类型的建筑(学术,娱乐)” (这可能意味着每个建筑物每个只有一个数组。总共2个数组。其余的赋值指令有其他语法错误。)
我有8个文件。每个类的.h和.cpp文件。 Campus是基类,Building是Campus的派生类,Academic和Recreational源自Building类。
我在 Campus.h 文件中声明数组的行上收到错误 C2061 。
Campus.h
#pragma once
class Campus
{
public:
Campus();
static const int maxPerBuildingType;
void loadFile();
void searchList();
void searchName();
private:
int numberOfAcademic, numberOfRecreation;
void Display();
Campus * campusArray = new Academic [maxPerBuildingType]; //Error C2061
Campus * RecreationalArray = new Recreational[maxPerBuildingType]; //Error C2061
};
Campus.cpp(尚未实现功能)
#include "Campus.h"
#include <fstream>
using namespace std;
const int Campus::maxPerBuildingType = 7;
Campus::Campus()
{
}
void loadFile()
{
}
void searchList()
{
}
void searchName()
{
}
Building.h
#pragma once
#include "Campus.h"
#include <string>
using namespace std;
class Building :
public Campus
{
public:
Building();
Building(int _ID, string _name, string _description);
int getID();
void setID(int _ID);
string getName();
void setName(string _Name);
string getDescription();
void setDescription(string _Description);
virtual void showFullDescription() = 0;
private:
int ID;
string name;
string description;
};
Academic.h
#pragma once
#include "Building.h"
class Academic :
public Building
{
public:
Academic();
Academic(int _ID, string _name, string _description, int _numOfRooms);
int getNumOfRooms();
void setNumOfRooms(int _numOfRooms);
virtual void showFullDescription();
private:
int numOfRooms;
};
我可能在代码中有其他一些错误,但我主要是想了解在我的作业需要的Campus类中制作学术和娱乐数组时我做错了什么。它还说要在.h文件中使这些私有。我不是在找人为我做我的工作,我只是想了解它,但截至目前,我完全不知道该怎么做。
提前感谢任何人的帮助!
答案 0 :(得分:1)
那些被定义为全局函数吗?
Campus.cpp
void loadFile()
void searchList()
void searchName()
这些是阿伦吗?
↓
void Campus::loadFile()
void Campus::searchList()
void Campus::searchName()
答案 1 :(得分:1)
您不能在类声明中使用campusArray
和recreationalArray
的初始化,如此
Campus * campusArray = new Academic [maxPerBuildingType];
Campus * recreationalArray = new Recreational[maxPerBuildingType];
原因是要使用初始化,您需要在Academic
类之前声明Recreational
和Campus
类,并且您不能这样做,因为它们是从Campus
继承的。
但是,您可以将初始化移至.cpp
文件,以便Campus.h
看起来像
class Campus
{
public:
static const int maxPerBuildingType;
Campus();
void loadFile();
void searchList();
void searchName();
private:
int numberOfAcademic, numberOfRecreation;
void Display();
Campus * campusArray;
Campus * recreationalArray;
};
Campus.cpp
成为(其他函数省略)
#include "Campus.h"
#include "Academic.h"
#include "Recreational.h"
const int Campus::maxPerBuildingType = 7;
Campus::Campus()
{
campusArray = new Academic[maxPerBuildingType];
recreationalArray = new Recreational[maxPerBuildingType];
}
如果您从Campus
移除Building
的继承,也可以解决这个问题,这样您的Academic
和Recreational
类就不会依赖Campus
。然后,您可以将Campus
的声明更改为
class Campus
{
public:
static const int maxPerBuildingType;
Building* campusArray = new Academic[maxPerBuildingType];
Building* recreationalArray = new Recreational[maxPerBuildingType];
};
同样在这种情况下,请不要将Academic.h
和Recreational.h
包含在Campus.h
中。