• 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.

Object Storage Arubacloud
0 głosów
226 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Szahid Pasjonat (20,930 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 VIP (101,030 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 VIP (101,030 p.)
komentarz 17 października 2015 przez Szahid Pasjonat (20,930 p.)
Co mam rozumieć przez słowo domniemany.
komentarz 17 października 2015 przez adrian17 Ekspert (344,860 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 VIP (101,030 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 Mędrzec (192,320 p.)

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

komentarz 17 października 2015 przez Szahid Pasjonat (20,930 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 Mędrzec (192,320 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 Pasjonat (20,930 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 Mędrzec (192,320 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 Pasjonat (20,930 p.)
Poprawione. I nadal lipa (kod w pytaniu również poprawiłem)
komentarz 17 października 2015 przez Szahid Pasjonat (20,930 p.)
Ok jeszcze jedną zmiane wprowadziłem i śmiga. Dziękuje.

Podobne pytania

0 głosów
1 odpowiedź 102 wizyt
pytanie zadane 22 października 2018 w JavaScript przez Biay Początkujący (420 p.)
0 głosów
1 odpowiedź 228 wizyt
0 głosów
1 odpowiedź 627 wizyt
pytanie zadane 30 marca 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)

92,536 zapytań

141,376 odpowiedzi

319,451 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...