Я хочу вызвать поле массива в статической функции dayInMonths()
, но компилятор сказал мне «Недопустимое использование члена Date::m_months
в статической функции». Я понятия не имею :(что я делаю неправильно.Недопустимое использование члена
.h
class Date
{
public:
..
Months* m_months;
..
public:
Date(..,unsigned int months=0,..);
~Date();
public:
static Days daysInMonth(unsigned int days);
};
class Months
{
public:
unsigned int m_months;
unsigned int m_monthsArray[13];
public:
Months(unsigned int months = 0);
..
date.cpp
Date::Date(unsigned int days, unsigned int months, unsigned int years)
{
..
m_months->m_months = months;
..
}
Days Date::daysInMonth(unsigned int days=0){
return m_months.m_monthsArray[days];
}
months.cpp
Months::Months(unsigned int months)
{
m_months = months;
m_monthsArray[0] = 29;
m_monthsArray[1] = 31;
...
'm_months' является членом любого данного экземпляра класса' Date'. Статическая функция 'daysInMonth' вызывается * без * экземпляра. Какой 'm_months' вы думаете, на что он действует? Может быть, вы хотите, чтобы 'daysInMonth' принимал' Months * ', или быть нестатической функцией-членом. – BoBTFish
Можете ли вы объяснить, почему ** вы хотите, чтобы 'daysInMonth' являлся * статической * функцией? Из всего, что вы показываете, этого не должно быть. –
okey, у меня есть право, мне нужно это «Месяцы * m; return m-> m_monthsArray [days];" но я получаю адрес памяти. Я знаю, что это основы C++, но -.- – user2372976