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

Odwołanie się do drugiej klasy

Object Storage Arubacloud
0 głosów
519 wizyt
pytanie zadane 14 listopada 2021 w C# przez Martita Bywalec (2,500 p.)
edycja 15 listopada 2021 przez Martita

Szukałam i nie znalazłam

Jak odwołać się z konstruktora klasy Osoba do konstruktora klasy Adres?

Wyskakuje mi błąd w klasie Osoba, z którym nie wiem jak sobie poradzić. Proszę o pomoc i wytłumaczenie.

Nie mogę zastosować get, sat i nie mogę zmieniać kodu w klasie Program. W klasie Osoba i Adres wszystkie nazwy muszą pozostać takie jakie są. Kod trzeba przerobić tak aby efekt końcowy był jak na obrazku.

Klasa Osoba

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kadry
{
    public class Osoba
    {
        private int numerEwidencyjny;
        private string nazwisko;
        private string imie;
        Adres adres;

        public Osoba(int numerEwidencyjny, string nazwisko, string imie, Adres adres)
        {
            this.numerEwidencyjny = numerEwidencyjny;
            this.nazwisko = nazwisko;
            this.imie = imie;
            this.adres = adres;
        }

        public Osoba(int numerEwidencyjny, string imie, int numerDomu) :
        this(numerEwidencyjny, "Kowalski", imie, "02-222", "Warszawa", "Aleje Jerozolimskie", numerDomu, 0) { }

        public Osoba(ref Osoba osoba)
        {
            numerEwidencyjny = osoba.numerEwidencyjny;
            nazwisko = osoba.nazwisko;
            imie = osoba.imie;
            adres = osoba.adres;
        }

        public string ZwrocKod()
        {
            return adres.kod;
        }

        public string ZwrocMiejscowosc()
        {
            return adres.miejscowosc;
        }

        public string ZwrocNazweUlicy()
        {
            return adres.nazwaUlicy;
        }
       
        public int ZwrocNumerDomu()
        {
            return adres.numerDomu;
        }

        public int ZwrocNumerMieszkania()
        {
            return adres.numerMieszkania;
        }

        public string ZwrocInformacjeOsobowe()
        {
            return string.Format("\n Pan(i) {0} {1} o numerze ewidencyjnym: {2} zamieszkały(a): {3} {4} {5}",
            nazwisko, imie, numerEwidencyjny, ZwrocKod(), ZwrocMiejscowosc(),
          ZwrocNazweUlicy() + " " + ZwrocNumerDomu() + " m" + ZwrocNumerMieszkania());
        }

        public void ZmienDaneOsobowe()
        {
            Console.Write("Podaj imię: "); imie = Console.ReadLine();
            Console.Write("Podaj nazwisko: "); nazwisko = Console.ReadLine();
            do
            {
                Console.Write("Podaj numer ewidencyjny: ");
            }
            while (!int.TryParse(Console.ReadLine(), out numerEwidencyjny));
        }

        public void ZmienAdres()
        {
            Console.Write("Podaj kod: ");
            adres.kod = Console.ReadLine();

            Console.Write("Podaj nazwę miejscowści: ");
            adres.miejscowosc = Console.ReadLine();

            Console.Write("Podaj nazwę ulicy ");
            adres.nazwaUlicy = Console.ReadLine();



            do
            {
                Console.Write("Podaj numer domu: ");

            }

            while (!int.TryParse(Console.ReadLine(), out adres.numerDomu));

            Console.Write("Czy jest numer mieszkania <t/n>: ");
            char c = Console.ReadKey().KeyChar;
            if (c == 't')
            {
                Console.WriteLine();

                do
                {
                    Console.Write("Podaj numer meszkania: ");
                }

                while (!int.TryParse(Console.ReadLine(), out adres.numerMieszkania));

            }

            else
            {
                adres.numerMieszkania = 0;
            }

        }

        public Osoba Klonuj()
        {
            return (Osoba)this.MemberwiseClone();
        }

    }


}

 

Klasa Adres

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kadry
{
    public class Adres
    {
        public string kod;
        public string miejscowosc;
        public string nazwaUlicy;
        public int numerDomu;
        public int numerMieszkania;

        public Adres(string kod, string miejscowosc, string nazwaUlicy, int numerDomu, int numerMieszkania)
        {
            this.kod = kod;
            this.miejscowosc = miejscowosc;
            this.nazwaUlicy = nazwaUlicy;
            this.numerDomu = numerDomu;
            this.numerMieszkania = numerMieszkania;
        }

        public Adres(ref Adres adres)
        {
            kod = adres.kod;
            miejscowosc = adres.miejscowosc;
            nazwaUlicy = adres.nazwaUlicy;
            numerDomu = adres.numerDomu;
            numerMieszkania = adres.numerMieszkania;
        }

    }


}

Klasa Program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kadry
{
    public class Program
    {
        static void Main(string[] args)
        {
            Osoba os1 = new Osoba(5, "Ola", 43);
            Console.WriteLine(" Oryginał {0}", os1.ZwrocInformacjeOsobowe());
            Console.WriteLine("\n***Zmieniamy klon:***\n");
            Osoba klon1 = os1.Klonuj();
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
            klon1.ZmienDaneOsobowe();
            klon1.ZmienAdres();
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());

            Osoba os3 = new Osoba(ref os1);
            Console.WriteLine(" Oryginał {0}", os3.ZwrocInformacjeOsobowe());
            Console.WriteLine("\n***Zmieniamy klon:***\n");
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
            klon1.ZmienDaneOsobowe();
            klon1.ZmienAdres();
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
            Console.ReadKey();
        }

    }


}

 

 

 

komentarz 15 listopada 2021 przez Martita Bywalec (2,500 p.)
BŁAGAM POMÓŻCIE

1 odpowiedź

0 głosów
odpowiedź 15 listopada 2021 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 23 listopada 2021 przez Martita
 
Najlepsza

W konstruktorze trójparametrowym klasy Osoba wywołujesz nieistniejący ośmioparametrowy konstruktor tej samej klasy. Zakładam, że chodziło o taki zapis:

public Osoba(int numerEwidencyjny, string imie, int numerDomu) :
this(numerEwidencyjny, "Kowalski", imie, new Adres("02-222", "Warszawa", "Aleje Jerozolimskie", numerDomu, 0)) { }

Podobne pytania

0 głosów
2 odpowiedzi 814 wizyt
pytanie zadane 2 grudnia 2015 w C# przez mrcnsct Nałogowiec (36,390 p.)
0 głosów
1 odpowiedź 192 wizyt
pytanie zadane 22 maja 2017 w C i C++ przez Sensej Użytkownik (540 p.)

92,578 zapytań

141,426 odpowiedzi

319,653 komentarzy

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

...