PHP: #include <iostream.h> #include <conio.h> #include <math.h> #include <fstream.h> #include <stdlib.h>> #define g 9.81 // Abstraktnuy klas class object { protected: double N; public: virtual void fileread()=0; virtual void calc()=0; virtual void filesave()=0; }; // Pohidnuy klas class rozbryzkuvach:public object { public: double ro, gama, f_otv, R, mu, S, H; public: void fileread(char *s); void calc(); void filesave(char *s); //konstruktor so spiskom inicializacii rozbryzkuvach (double ro_tmp, double gama_tmp, double f_otv_tmp, double R_tmp, double mu_tmp, double S_tmp, double H_tmp) { ro=ro_tmp; gama=gama_tmp; f_otv=f_otv_tmp; R=R_tmp; mu=mu_tmp; S=S_tmp; H=H_tmp; } //konstruktor kopirovanija rozbryzkuvach::rozbryzkuvach(const rozbryzkuvach & d) { ro=d.ro; gama=d.gama; f_otv=d.f_otv; R=d.R; mu=d.mu; S=d.S; H=d.H; } //pustoi konstruktor rozbryzkuvach () { } rozbryzkuvach&operator=(const rozbryzkuvach & d); rozbryzkuvach&operator==(const rozbryzkuvach & d); rozbryzkuvach&operator!=(const rozbryzkuvach & d); rozbryzkuvach&operator<(const rozbryzkuvach & d); rozbryzkuvach&operator<=(const rozbryzkuvach & d); rozbryzkuvach&operator>(const rozbryzkuvach & d); rozbryzkuvach&operator>=(const rozbryzkuvach & d); }; //schityvanie s faila void rozbryzkuvach::fileread(char *s) { ifstream ifs(s); if (!ifs) { cout<<"File "<<s<<" don't open.\n"; exit(1); } ifs>>ro>>gama>>f_otv>>R>>mu>>S>>H; ifs.close(); } //zapis' v fain void rozbryzkuvach::filesave(char *s) { ofstream ofs(s); ofs<<"N= "<<N<<"\n"; ofs.close(); } //razchet dannih void rozbryzkuvach::calc() { N=((2/3*M_PI*ro*(gama*gama)*f_otv*mu*pow(R,3))/g*S)*sqrt(pow((pow(gama,2)*pow(R,2))+(2*g*H),3)); cout<<"N= "<<N<<endl; } rozbryzkuvach&rozbryzkuvach::operator==(const rozbryzkuvach & d) { cout<<"operator =="; if (N==d.N) { cout<<"N=d.N"; }else{ cout<<"N!=d.N"; } return *this; } rozbryzkuvach&rozbryzkuvach::operator != (const rozbryzkuvach & d) { cout<<"operator <="; if (N<=d.N) { cout<<"N<=d.N"; }else{ cout<<"N!=d.N"; } return *this; } rozbryzkuvach&rozbryzkuvach::operator < (const rozbryzkuvach & d) { cout<<"operator <"; if (N<d.N) { cout<<"N<d.N"; }else{ cout<<"N ne menshe d.N"; } return *this; } rozbryzkuvach&rozbryzkuvach::operator <= (const rozbryzkuvach & d) { cout<<"operator !="; if (N!=d.N) { cout<<"N!=d.N"; }else{ cout<<"N=d.N"; } return *this; } rozbryzkuvach&rozbryzkuvach::operator > (const rozbryzkuvach & d) { cout<<"operator >"; if (N>d.N) { cout<<"N>d.N"; }else{ cout<<"N ne bolshe d.N"; } return *this; } rozbryzkuvach&rozbryzkuvach::operator >= (const rozbryzkuvach & d) { cout<<"operator >="; if (N>=d.N) { cout<<"N>=d.N"; }else{ cout<<"N ne bolshe i ne ravno d.N"; } return *this; } void main() { clrscr(); rozbryzkuvach z(1000, 100, 2e-6, 0.15, 0.65, 1e-4, 0.3); object *obj=&z; obj->fileread("in.txt"); obj->calc(); obj->filesave("out.txt"); rozbryzkuvach pusto; pusto=z; pusto==z; pusto!=z; pusto<z; pusto<=z; pusto>z; pusto>=z; rozbryzkuvach copy_z(z); getch(); }
http://upwap.ru/1168331 Скрин с ошибками 187 строка: rozbryzkuvach z(1000, 100, 2e-6, 0.15, 0.65, 1e-4, 0.3);
Твой класс object абстрактный. Т.к. Все методы чисто вируальные. Нельзя создать экземпляр класса (т.е. z) у абстрактного класса. Вот builder и ругается.