Witam, mam problem z napisaniem Klasy Kula, a dokłądniej z użyciem listy inicjalizacyjnej.
Błądy w MS Visual C++:
Error 1 error C2664: 'Kolo::Kolo(const Kolo &)' : cannot convert argument 2 from 'float' to 'std::string'
Error 2 IntelliSense: no instance of constructor "Kolo::Kolo" matches the argument list argument types are: (std::string, float)
Co ceikawe, gdy nie uzywam listy inicjalizacyjnej, a wszystko w klamrze konstruktora jest jak w kodzie, to na ekranie widze obliczoną objętość kuli i jej nazwę.
Kod:
#define _USE_MATH_DEFINES
#include <cmath>
#include <iostream>
#include <string>
using namespace std;
class Punkt{
float x, y;
string nazwa;
public:
void wyswietl(){
cout << nazwa << "(" << x <<", "<< y << ")";
}
Punkt(string n="S", float a=0, float b=0){
nazwa = n;
x = a;
y = b;
}
};
class Kolo :public Punkt{ // klasa Kolo dziedziczy publicznie z klasy Punkt
string nazwa;
protected:
float r;
public:
void wyswietl(){
cout << "Kolo " << nazwa << endl;
cout << "Srodek kola: " << endl;
Punkt::wyswietl();
cout << endl << "Promien = " << r << endl;
cout << "Pole kola = " << M_PI *r*r << endl;
}
Kolo(string nk="Kolko", string np="S", float a=0, float b=0, float pr=1)
:Punkt(np,a,b)
{
nazwa = nk;
r = pr;
}
};
class Kula :public Kolo{ // klasa Kula dziedziczy publicznie z klasy Kolo
string nazwa;
public:
void wyswietl(){
cout << "Kula " << nazwa << endl;
cout << "Objetosc kuli = " << 4.0/3.0 * M_PI *pow(r,3) << endl;
}
Kula(string nku = "Kuleczka", float pr = 1)
:Kolo(nku, pr)
{
nazwa = nku;
r = pr;
}
};
int main(){
// Kolo k1;
// k1.wyswietl();
Kula kula1;
kula1.wyswietl();
return 0;
}