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

Problem z konstruktorem [C++]

VPS Starter Arubacloud
0 głosów
859 wizyt
pytanie zadane 30 marca 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)
edycja 30 września 2020 przez Marchewka900

Mam klasę "MTF" dziedziczącą z klasy polimorficznej "Postać". W klasie MTF mam konstruktor:

class MTF :public Postac
{
private:
	string gender;
	string name;
	string surname;
	string rank;

	string fullname;

public:
	MTF(string r = "Żołnierz")
	{
		rank = r;
	}

Dalej mam dość długą funkcję name() (dlatego nie wkleiłam), która losuje imię i nazwisko postaci. Niestety, w konstruktorze nie mogę umieścić tej funkcji. Moim zamierzeniem jest taka sytuacja:

>Tworzę obiekt klasy MTF bez podawania danych.
>W programie tworzy się obiekt z danymi:
rank = "Żołnierz";
gender = "Mężczyzna";
name = "Stefan";
surname = "Kowalski";

Gdzie gender, name i surname są losowane przez funkcję name(). Innymi słowy nie chcę za każdym razem wpisywać dwóch linijek kodu, tylko jedną:

MTF obiekt1;

//Dalsze instrukcje

// ZAMIAST //

MTF obiekt1;
obiekt1.name();

//Dalsze instrukcje

Jak to zrobić? Jeśli wyraziłam się nie jasno, proszę mówić, dopiszę.

1 odpowiedź

0 głosów
odpowiedź 30 marca 2017 przez mokrowski Mędrzec (156,260 p.)

W ten sposób masz zdefiniowane 2 konstruktory w kodzie. Jeden domyślny bez argumentów (tak wiem że tego nie widać), oraz z możliwością podania argumentu. Rozdziel ich implementację i po sprawie :-) :

class MTF :public Postac
{
private:
    string gender;
    string name;
    string surname;
    string rank;
 
    string fullname;
 
public:
    MTF()
    {
        rank = "Żołnierz";
        /// Dalsza część konstruktora dla obiektu Żołnierz
    }
    MTF(string r) {
        // Konstruktor dla obiektu z podaniem danych
    }

 

komentarz 30 marca 2017 przez mokrowski Mędrzec (156,260 p.)

Popatrz na mój przykład. 2 konstruktor nie może mieć parametru domyślnego!

Zacytuję .. siebie... :-/

W ten sposób masz zdefiniowane 2 konstruktory w kodzie. Jeden domyślny bez argumentów (tak wiem że tego nie widać), oraz z możliwością podania argumentu.

Jeśli chcesz mieć działanie jakie opisałeś, nie możesz mieć konstruktora z argumentem domyślnym bo on tworzy 2 konstruktory. Bez-parametrowy oraz z parametrem typu string.

Podobne pytania

0 głosów
1 odpowiedź 119 wizyt
pytanie zadane 22 października 2018 w JavaScript przez Biay Początkujący (420 p.)
0 głosów
1 odpowiedź 254 wizyt
0 głosów
1 odpowiedź 229 wizyt
pytanie zadane 9 stycznia 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)

93,008 zapytań

141,975 odpowiedzi

321,256 komentarzy

62,350 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...