webForumDet fria alternativet

anrop till metodi instansierad klass, hur?

2 svar · 226 visningar · startad av sabbacus

sabbacusMedlem sedan juli 2002630 inlägg
#1

Tjipp.
Sitter här och knåpar lite och min kompilator klagar just nu bara över en endaste sak och jag går bet på felet. Jag _tror_ att felet är att jag anropar en metod i en instansierad klass på fel sätt, men då jag är nybörjare har jag ingen aning egentlgien. Lite hjälp vore önskvärt.

Kod:
long total_days=0;
// year, month, day är integer
// Instansierar nytt kalenderobjekt
Calendar calendar = new GregorianCalendar(year, month, day);

// Instansierar ett objekt, tror jag iaf
Calendar old_date_calendar = new MyCalendar();

// days_since är en funktion i MyCalendar som returnerar en long
total_days = old_date_calendar.days_since(calendar);

Felet kompilatorn ger mig är "cannot resolve symbol" på days_since. Detta är dock inte det egentlige felet då klassen MyCalendar är prövad och fungerande kod.

Jag anser att felet ligger antignen i

  1. instansieringen av old_date_calendar, alternativt
  2. old_date_calendar...

Gissningsvis är detta värsta nybörjarfelet men då det är mitt första objektorienterade program så... ja :-)

Lite hjälp vore önskvärt.
/Magnus

ViktorMedlem sedan aug. 20021 752 inlägg
#2

Jag antar att MyCalendar() ärver av Calendar (eller implementerar Calendar), eller?

Calendar old_date_calendar = new MyCalendar();

Här skapar du en ny instans av klassen MyCalendar och konverterar den direkt till klassen Calendar, och klassen Calendar har ingen medlems funktion som heter "days_since()".
För att det ska fungera behöver du arbeta med ett MyCalendar objekt och inte Calendar.

MyCalendar old_date_calendar=new MyCalendar();

ellse kanske (lite osäker om detta fungerar)

Calendar old_date_calendar = new MyCalendar(); 
total_days = ((MyCalendar)old_date_calendar).days_since(calendar);

dvs här konverterar du tillbaka objektet till att vara ett objekt av typen MyCalendar, och får därigenom tillgång till funktionen days_since.

/Viktor

sabbacusMedlem sedan juli 2002630 inlägg
#3

Tjipp
Jag ändrade 'Calendar' i
Calendar old_date_calendar = new MyCalendar();
till 'MyCalendar' vilket således blidde
MyCalendar old_date_calendar=new MyCalendar();

Och då funkade hela programmet hur bra som helst. Och nu när jag vet vad jag gjort för fel så skäms jag nästan lite :-)

Tackar!

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)