• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z konstruktorem i prośba o wytłumaczenie.

0 głosów
116 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Szahid Stary wyjadacz (13,570 p.)
edycja 17 października 2015 przez Szahid

Mam problem z konstruktorem w klasie Kula. Kompilator wywala mi - 

error: no matching function for call to 'Kolo::Kolo(std::string&, float&, float&, float&)'|

 

#include <iostream>
#include <math.h>

using namespace std;

class Punkt
{
   float x,y;
   string nazwa;

public:
   void wyswietl()
   {
      cout<<nazwa<<"("<<x<<","<<y<<")"<<endl;
   }
   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;

public:
    float r;
   void wyswietl()
   {
      cout<<"Kolo o nazwie: "<<nazwa<<endl;
      cout<<"Srodek kola: "<<endl;
      Punkt::wyswietl();
      cout<<"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
{
    string nazwa;
    public:
  Kula(string nku="Kulka",string sro="S",float a=0, float b=0, float p=0)
  :Kolo(sro,a,b,p)
  {
      nazwa=nku;
  }


};

int main()
{

Kula k1;
    return 0;
}

 

Korzystając z okazji mam pytanie

Jak ma zrobić inicjalizację konstruktora jeśli chce wyuskać tylko niektóre dane?

 

2 odpowiedzi

+1 głos
odpowiedź 17 października 2015 przez Radfler Szeryf (93,960 p.)
wybrane 17 października 2015 przez Szahid
 
Najlepsza
Konstruktor klasy Kula jest błędny. Argumenty domniemane definiujemy "od lewej", tz. jeżeli jakiś argument funkcji jest domniemany, to wszystkie argumenty na prawo też muszą być domniemane.

Ostatniego pytania zbytnio nie rozumiem. Może chodzi Ci o przeładowanie konstruktora? Tz. wiele konstrukorów z różnymi parametrami? :)
komentarz 17 października 2015 przez Radfler Szeryf (93,960 p.)
komentarz 17 października 2015 przez Szahid Stary wyjadacz (13,570 p.)
Co mam rozumieć przez słowo domniemany.
komentarz 17 października 2015 przez adrian17 Szeryf (94,360 p.)
Błędy kompilatora sprowadzają się do: tylko ostatnie argumenty mogą mieć wartości domyślne. Domniemany == domyślny.
komentarz 17 października 2015 przez Radfler Szeryf (93,960 p.)

Argument domyślny np.

Kula(int i = 0); // Argument domniemany: "argument = wartość_domniemana"

Kula(int i); // Brak argumentu domniemanego
komentarz 17 października 2015 przez Patrycjerz VIP (137,660 p.)

A ja dorzucę coś po polsku: http://guidecpp.cal.pl/cplus,functions.

komentarz 17 października 2015 przez Szahid Stary wyjadacz (13,570 p.)
Poprawiłem wszystko z Twoimi zaleceniami i wróciłem do punktu wyjścia z przed dwóch godzin :) . Co prawda błędów w tym miejscu wywaliło mniej ale nadal są ;/
+1 głos
odpowiedź 17 października 2015 przez Patrycjerz VIP (137,660 p.)

A popatrz na deklaracje konstruktora klasy Kolo - ma on pięć argumentów, a w konstruktorze klasy Kula wywołujesz tylko cztery... nie wiem, czy nie ma większej ilości błędów, ale widać, jak sprawdziłeś kod przed napisaniem tematu na forum.

komentarz 17 października 2015 przez Szahid Stary wyjadacz (13,570 p.)
Siedze przy tym kodzie od rana. Poprostu nie do końca ogarniam temat. Wywołuje 4 bo nazwa z klasy koło nie jest mi potrzebna gdyż kula będzie miała inną nazwe. Masz może pomysł jak rozwiązać ten problem.
komentarz 17 października 2015 przez Patrycjerz VIP (137,660 p.)
Tak jak kolega napisał, argumenty domniemane w konstruktorze muszą być na końcu, czyli za nimi nie może być argument zwykły.
komentarz 17 października 2015 przez Szahid Stary wyjadacz (13,570 p.)
Poprawione. I nadal lipa (kod w pytaniu również poprawiłem)
komentarz 17 października 2015 przez Szahid Stary wyjadacz (13,570 p.)
Ok jeszcze jedną zmiane wprowadziłem i śmiga. Dziękuje.

Podobne pytania

0 głosów
2 odpowiedzi 100 wizyt
pytanie zadane 30 września 2015 w Java przez Damianoo4444 Bywalec (2,720 p.)
0 głosów
2 odpowiedzi 87 wizyt
pytanie zadane 24 sierpnia 2015 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 48 wizyt
pytanie zadane 30 marca w C i C++ przez Meeto93 Gaduła (3,580 p.)
...