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

Polimorfizm/dziedziczenie błąd - no operator "<<" matches these operands operand types are:

Object Storage Arubacloud
0 głosów
345 wizyt
pytanie zadane 9 stycznia 2017 w C i C++ przez Jedyn Obywatel (1,200 p.)

Witam jestem w trakcie pisania zadania pierwszego z tego pdf: https://www.docdroid.net/QIE0zVc/polimorfizm.pdf.html
Niestety jak chce wyświetlić obiekt Adres z zewnętrznej klasy to wywala mi taki błąd: while trying to match the argument list '(std::basic_ostream<char,std::char_traits<char>>, Adres). Czy ktoś jest w stanie powiedzieć mi dla czego?

Pastebin: http://pastebin.com/5dMzijEC

Lub

KOD:

 

#include "stdafx.h"
using namespace std;
class Adres
{
protected:
    string m_miasto;
    string m_ulica;
    int m_numer;
public:
    Adres(string miasto, string ulica, int numer)
        :m_miasto(miasto), m_ulica(ulica), m_numer(numer)
    {
        cout << "Konstruktor klasy Adres" << endl;
 
    }
    void adres(string miasto, string ulica, int numer)
    {
        m_miasto = miasto;
        m_ulica = ulica;
        m_numer = numer;
    }
    void virtual wyswietl()
    {
        cout << "Miasto: " << m_miasto << " ulica: " << m_ulica << " numer: " << m_numer << endl;
    }
 
 
 
    virtual ~Adres()
    {
        cout << "Destruktor klasy Adres" << endl;
    }
};
 
class TOsoba
{
private:
    string m_imie;
    string m_nazwisko;
    int m_wiek;
    Adres m_adres;
public:
    TOsoba(string imie, string nazwisko, int wiek, Adres adres)
        : m_adres(adres),
        m_imie(imie),
        m_nazwisko(nazwisko),
        m_wiek(wiek)
 
    {
 
    }
    virtual void wyswietl()
    {
        cout << m_imie << m_nazwisko << m_adres<<endl;     //<--------wyskakuje błąd "while trying to match the argument list //'(std::basic_ostream<char,std::char_traits<char>>, Adres)"
 
 
// oraz świeci się na czerwono "no operator "<<" matches these operands operand types are: std::basic_ostrean<char,std::char_traits<char>><<Adres
    }
    string PodajImie()
    {
        return m_imie;
    }
    string PodajNazwisko()
    {
        return m_nazwisko;
    }
 
};
class TStudent : public TOsoba
{
public:
    TStudent(string m_imi, string m_nazwisk, int wie, string kierunek, int rok, Adres adres)
        :TOsoba(m_imi, m_nazwisk, wie, adres),
        m_kierunek(kierunek),
        m_rok(rok)
    {
 
    }
    virtual void wyswietl()
    {
 
    }
    string kierunek()
    {
 
    }
 
private:
    string m_kierunek;
    int m_rok;
};
 
 
 
int main()
{
 
 
    return 0;
}


 

1 odpowiedź

+1 głos
odpowiedź 9 stycznia 2017 przez timrh Mądrala (6,030 p.)
wybrane 9 stycznia 2017 przez Jedyn
 
Najlepsza

Dołącz aby móc wyświetlać stringi:

#include <string>

Nie możesz wypisać klasy Adres, jednak masz metodę która wypisze wszystkie potrzebne dane, wywołaj ją więc:

	virtual void wyswietl()
	{
		cout << m_imie << m_nazwisko; 
		m_adres.wyswietl();
	}

 

komentarz 9 stycznia 2017 przez Jedyn Obywatel (1,200 p.)
#include <iostream> mam dodane do stdfx.h czyli to nie przez to
komentarz 9 stycznia 2017 przez timrh Mądrala (6,030 p.)
Poprawiłem odpowiedź.
komentarz 9 stycznia 2017 przez Jedyn Obywatel (1,200 p.)

Działa ;) Kolejny problem przy deklaracji obiektu. Muszę jakoś stworzyć obiekt tej klasy Adres żeby później wstawić go do TOsoba *p1? Czy jak to można zrobić?

 

 

TOsoba*p1 = new TOsoba("Stefan", "Jak", 13, a tutaj co wpisac?);
	p1->wyswietl();

 

komentarz 9 stycznia 2017 przez timrh Mądrala (6,030 p.)

Wywołaj konstruktor Adresu.

TOsoba*p1 = new TOsoba("Stefan", "Jak", 13, Adres("Miasto", "ulica", 20));

 

komentarz 9 stycznia 2017 przez Jedyn Obywatel (1,200 p.)
o kurcze próbowałem tak zrobić i nie działało ale najwyraźniej coś źle napisałem. Dzięki wielkie :)

Podobne pytania

0 głosów
1 odpowiedź 230 wizyt

92,555 zapytań

141,402 odpowiedzi

319,552 komentarzy

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

...