Я пытаюсь создать программу, которая создает массив указателей на объекты, включая унаследованные объекты. Ошибка, которую я получаю, находится в первой скобке (из cSClass, например, SArray[2] = new cSClass(...);
(последняя строка внизу всего кода). Ошибка говорит: «ни один экземпляр конструктора cSClass :: cSClass не соответствует списку аргументов»
Спасибо
Весь код ниже:
Код для заголовка суперкласса:
class sClass;
class sClass {
protected:
std::string name;
int yearBuilt;
public:
// Constructor
sClass(string n = "s1", int yb = 2000) {
name = n;
yearBuilt = yb;
}
// Mutator functions
void setName(string);
void setYearBuilt(int);
// Accessor functions
string getName() {
return name;
}
int getYearBuilt() {
return yearBuilt;
}
// Functions
void getInfo();
};
основной класс суперкласса:
#include "sClass.h"
using namespace std;
// Mutators
void sClass::setName(string n) {
name = n;
}
void sClass::setYearBuilt(int yb) {
yearBuilt = yb;
}
// Print function
void sClass::getInfo() {
cout << "Name: " << name << endl;
cout << "Year Built: " << yearBuilt << endl;
}
Код для заголовка подкласса:
#include "sClass.h"
class cSClass : public sClass {
protected:
int maxPassengers;
public:
// Constructor
cSClass(int mp = 2000) : sClass() {
maxPassengers = mp;
}
// Mutator functions
void setMaxPassengers(int);
// Accessor functions
int getMaxPassengers() {
return maxPassengers;
}
// Functions
void getInfo() {
}
};
Код для класса подкласса: #include "cSClass.h"
// Mutators
void cSClass::setMaxPassengers(int mp) {
maxPassengers = mp;
}
// Print function
void cSClass::getInfo() {
cout << "Name: " << name << endl;
cout << "Maximum Passengers: " << maxPassengers << endl;
}
И, наконец, это основной программный код, в котором я получаю ошибки, когда я пытаюсь заполнить массив: #include "sClass.h" #include "cSClass.h"
int main() {
sClass *SArray[6];
SArray[0] = new sClass(...);
SArray[1] = new sClass(...);
SArray[2] = new cSClass(...);
SArray[3] = new cSClass(...);
}
Редактировать: ошибка вверху, и аргументы, которые я передаю,
SArray[2] = new cSClass("RMS Queen Mary 2", 2003, 2700);