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

VPS Starter Arubacloud
0 głosów
225 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,100 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,340 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,340 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,340 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ź 101 wizyt
pytanie zadane 22 października 2018 w JavaScript przez Biay Początkujący (420 p.)
0 głosów
1 odpowiedź 227 wizyt
0 głosów
1 odpowiedź 590 wizyt
pytanie zadane 30 marca 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...