Error C2259 cannot instantiate abstract class
Please, help me to solve the error My code:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Address {
int buildingNumber;
string street;
string city;
};
class IBuilding {
private:
//Address adr;
public:
Address adr;
IBuilding(const string& streetP, const string& cityP) {
adr.street = streetP;
adr.city = cityP;
};
virtual void Init()=0;
virtual void Print()=0;
virtual void setAddress()=0;
virtual ~IBuilding();
};
class Scool : public IBuilding
{
protected:
public:
Scool();
Scool(const string& streetP, const string& cityP, const int& numP)
:IBuilding(streetP, cityP) {
adr.buildingNumber = numP;
};
virtual void Init() override {};
virtual void Print() override {
cout << adr.street << endl;
cout << adr.city << endl;
};
void setAddress() override {};
~Scool(){};
};
class Street {
private:
//IBuilding** buildings;
vector<IBuilding> buildings;
string street{ "" };
string city{ "" };
int streetSize{ 0 };
public:
Street(){
buildings.clear();
street = "";
city = "";
streetSize = 0;
};
Street(const int& streetSizeP, string streetP, string cityP) {
buildings.push_back(Scool(streetP, cityP,10));
streetSize = streetSizeP;
};
void print() {
buildings[0].Print();
}
~Street() {
};
};
int main() {
Street str1(10,"test1","test2");
str1.print();
return 0;
}
Источник: Stack Overflow на русском