Ich versuche, ein dynamisches Array einer abstrakten Klasse (CellPhone) zu erstellen und dann mit verschiedenen Objekten des Typs Cell1 und Cell2 zu füllen.Erstellen eines dynamischen Arrays einer abstrakten Klasse
Ich habe versucht, mit dynamischen Arrays und Vektoren aber beide geben einen Fehler:
Alle Klassen erstellt werden und arbeiten, aber in der Haupt:
Cell1 c1("Orange", "Hello! This is your friend Rima, call me when you can.", 0777170, "Sony");
Cell2 c2("Zain", "Call me ASAP, Sam", 0777777777, "blue", "wifi");
Cell1 c3("Omnia", "Let me know when you can pass by", 0711111111, "Samsung");
CellPhone *c[3];
*c[0]=&c1; //Conversion to base class error
vector<CellPhone*> cp;
cp.push_back(&c1); //Conversion to base class error
Ich habe andere Fälle sah aber in beiden Richtungen Ich erhalte einen Fehler? Warum? Und wie man es repariert?
EDIT: Hier sind die Klassenüberschriften als Referenz:
class CellPhone{
private:
string branch, message;
int phoneNumber;
public:
CellPhone(string, string, int);
virtual void receiveCall() = 0;
void receiveMessage();
virtual void dial() = 0;
void setBranch(string);
void setMessage(string);
void setPhoneNumber(int);
string getBranch();
string getMessage();
int getPhoneNumber();
};
#include "CellPhone.h"
class Cell1:CellPhone{
private:
string cameraType;
bool isCameraUsed;
public:
Cell1(string, string, int, string);
void capture();
void receiveCall();
void dial();
void setCameraType(string);
string getCameraType();
};
#include "Cell1.h"
class Cell2:CellPhone{
private:
string wifi, bluetooth;
public:
Cell2(string, string, int, string, string);
void turnBluetoothOn();
void turnBlueToothOff();
void setWifi(string);
void setBluetooth(string);
string getWifi();
string getBluetooth();
void receiveCall();
void dial();
};
Zelle2 hat die Referenz von Zelle1, denn wenn dies nicht der Fall wäre, würde es im Wesentlichen einen Klassenredefinitionsfehler geben.
Ohne CellPhone, Cell1, Cell2 Definition ist es unmöglich zu beantworten. http://stackoverflow.com/help/mcve – jpo38
Fertig in der Bearbeitung –
Wenn Sie keine Vererbung auswählen, verwendet C++ standardmäßig private Vererbung. Das ist nicht klug. – IInspectable