Problem z przekazaniem stałego obiektu

Problem z przekazaniem stałego obiektu
Kubek IT Technology
  • Rejestracja:około 6 lat
  • Ostatnio:około 6 lat
  • Postów:2
0

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

Kopiuj
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ć.

MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:15 dni
  • Lokalizacja:Warszawa
  • Postów:1454
1

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

Kopiuj
void printDate(const Date *date)

"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 2x, ostatnio: MasterBLB
YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:472
1
Kopiuj
// 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;
}

Nie pisz na priv. Zadaj dobre pytanie na forum.
Kubek IT Technology
  • Rejestracja:około 6 lat
  • Ostatnio:około 6 lat
  • Postów:2
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 ?

MasterBLB
wskaźnik na referencję do stałego obiektu, dokładniej rzecz ujmując. Nie zapomnij pyknąć ptaszka pod najbardziej pomocnym z postów aby inni użytkownicy 4p szukający odpowiedzi widzieli, że na to pytanie satysfakcjonująco odpowiedziano.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.