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

Konstruktor wewnątrz konstruktora

0 głosów
280 wizyt
pytanie zadane 20 listopada 2018 w C i C++ przez estewui Początkujący (270 p.)
const Period p1(Date(2014, 11, 23), Date(2014, 11, 25));

Mam taki fragment kodu w main.cpp i muszę dopisać do niego konstruktor klasy Period i klasy Date.

Próbowałem zrobić takie prorotypy:

Period::Period(Date d1, Date d2);
Date::Date(int day, int month, int year);

Jednak to nie działa. Kompilator wyrzuca niezgodność typów. Jak zinterpretować argument wewnątrz konstruktora Period (Date(2014, 11, 23))? Czy jest to obiekt klasy Date czy nie? Z góry dzięki :P

2 odpowiedzi

0 głosów
odpowiedź 20 listopada 2018 przez j23 Mędrzec (195,220 p.)
Period::Period(const Date &d1, const Date &d2) { }
Date::Date(int year, int month, int day) { }

 

0 głosów
odpowiedź 20 listopada 2018 przez mokrowski Mędrzec (159,000 p.)

W użyciu które masz, Date(...) jest przekazywane jako r-referencja.

#include <iostream>

struct Date {
    Date(int y, int m, int d) {}
};

struct Period {
    Period(const Date& d1, const Date& d2) {
        std::cout << "Period(const Date&, const Date&)\n";
    }
    Period(Date&& d1, Date&& d2) {
        std::cout << "Period(Date&&, Date&&)\n";
    }
};

int main() {
    Date d(2018, 11, 20);
    const Period period1(d, d);
    const Period period2(Date(2018, 11, 20), Date(2030, 11, 11));
}

 

Podobne pytania

0 głosów
2 odpowiedzi 575 wizyt
pytanie zadane 18 września 2020 w C i C++ przez stanleylbn Nowicjusz (180 p.)
0 głosów
1 odpowiedź 307 wizyt
pytanie zadane 4 listopada 2022 w C i C++ przez RufinB Bywalec (2,020 p.)

93,771 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,372 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...