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

Klasa zawierająca klase, bez dziedziczenia. Dlaczego kod nie działa?

Object Storage Arubacloud
0 głosów
161 wizyt
pytanie zadane 25 listopada 2018 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
edycja 25 listopada 2018 przez Daaa22

Chciałbym zrobić klase "punkt", który posiada x, y, i klase "nazwanyPunkt", który posiada x, y, nazwa. Wiem że można to łatwo zrobić za pomocą dziedziczenia, ale jestem uparty i chce mieć tak

#include <iostream>

using namespace std;

class punkt
{
public:
    int x, y;

    void setPosition( int X, int Y )
    {
        x = X;
        y = Y;
    }
};

class nazwanyPunkt
{
public:
    string name;
    punkt p;

    nazwanyPunkt( string nazwa, int X, int Y )
    {
        name = nazwa;
        p.setPosition( X, Y );
    }
};

int main()
{
    nazwanyPunkt abc( "abc", 1, 1 );

    return 0;
}

w linijce "nazwanyPunkt( string nazwa, int X, int Y )" wyskakuje błąd "no matching function for call to 'nazwanyPunkt ::nazwanyPunkt()'". Co robię źle?

Edit:
Kod, działa, ale jak w klasie zamiast 

punkt p;

wpisuje

punkt p( 1, 2 );

to już nie działa

komentarz 26 listopada 2018 przez adrian17 Ekspert (344,860 p.)
Wklejony przez Ciebie kod kompiluje się na GCC, Clangu i MSVC. Pokaż kod, który nie działa.

2 odpowiedzi

+1 głos
odpowiedź 26 listopada 2018 przez niezalogowany
wybrane 2 grudnia 2018 przez Daaa22
 
Najlepsza

Do klasy punkt dodaj konstruktor. Użyj listy inicjalizacyjnej:

    nazwanyPunkt( string nazwa, int X, int Y )
        :p(1, 2)
    {
        name = nazwa;
        p.setPosition( X, Y );
    }
0 głosów
odpowiedź 26 listopada 2018 przez j23 Mędrzec (194,920 p.)

Załącz nagłówek <string>.

 

Możesz też poprawić linię 25 na name = std::move(nazwa);, ewentualnie przekaż nazwa przez const &.

Podobne pytania

0 głosów
1 odpowiedź 318 wizyt
0 głosów
0 odpowiedzi 279 wizyt
pytanie zadane 10 lutego 2023 w C i C++ przez Martita Bywalec (2,470 p.)
0 głosów
2 odpowiedzi 361 wizyt
pytanie zadane 9 października 2020 w C i C++ przez kaminie318 Bywalec (2,070 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...