Problem z przekazaniem stałego obiektu

0

Siemka. Mam problem dotyczący następującego kodu:

class Date
{
private:
    int m_year;
    int m_month;
    int m_day;
    
public:
    Date(int year, int month, int day)
    {
        setDate(year, month, day);
    }
    
    void setDate(int year, int month, int day)
    {
        m_year = year;
        m_month = month;
        m_day = day;
    }
    
    int getYear() const { return m_year; }
    int getMonth() const { return m_month; }
    int getDay() const { return m_day; }
};

// note: We're passing date by const reference here to avoid making a copy of date
void printDate(const Date *& date)
{
    std::cout << date->getYear() << "/" << date->getMonth() << "/" << date->getDay() << '\n';
}

int main()
{
    Date * date = new Date(2016, 10, 16);
    printDate(date);
    
    return 0;
}

Chcę przekazywać ten wskaźnik na obiekt tak aby wewnątrz mojej metody print nie było można go modyfikować.

1

Już masz praktycznie zrobione, tylko ten ampersand wywal z definicji. O tak:

void printDate(const Date *date)
1
// note: We're passing date by const reference here to avoid making a copy of date
void printDate(const Date & date)
{
	std::cout << date.getYear() << "/" << date.getMonth() << "/" << date.getDay() << '\n';
}

int main()
{
	Date * date = new Date(2016, 10, 16);
	printDate(*date);

	return 0;
}
0

Dzięki za rady. Czyli ogólnie to wychodzi na to że przekazywałem referencję na stały wskaźnik na obiekt i dlatego nie działało ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1