Alpha IIMedlem sedan maj 20002 993 inlägg Går det på något sätt att initiera en array som ligger inne i en klass på ett sätt som liknar detta?
EqFunction functions[] =
{
{"sqrt", &_SQRT },
{"pow", &_POW },
{"cos", &_COS },
{"sin", &_SIN },
{"tan", &_TAN },
{"nderiv", &_NDERIV },
{NULL}
};
Alpha IIMedlem sedan maj 20002 993 inlägg Problemet var större än så. Eftersom jag tvingades till att flytta in _SQRT, _POW, etc in i klassen när de helt plötsligt behövde tillgång till en annan funktion i klassen.
Men det går ju inte att få tag i en pekare till en funktion inne i klassen.
Den enda lösningen jag kommer på är att skicka med en pekare till klassen vid anrop till funktionerna och lägga till alla funktioner som friend-funktioner. Det tycker jag låter jobbigt och undrar om det finns ett bättre sätt. :)
Marcus EMedlem sedan maj 20021 466 inlägg Funktionspekare kan peka till funktioner i klasser med tillägg till C++. Vilken kompilator använder du?
Initieringen kan du göra med hjälp av en konstruktör. Anropa konstruktören för EqFunction istället för {} vid varje objekt i functions.
spangoMedlem sedan juni 20008 205 inlägg Re: Initiera struct array som tillhör en class?
Alpha II skrev:
Går det på något sätt att initiera en array som ligger inne i en klass på ett sätt som liknar detta?
EqFunction functions[] =
{
{"sqrt", &_SQRT },
{"pow", &_POW },
{"cos", &_COS },
{"sin", &_SIN },
{"tan", &_TAN },
{"nderiv", &_NDERIV },
{NULL}
};
Den sista NULL-grejen kommer inte att funka, arrayen innehåller inte pekare utan faktiska objekt.
Alpha IIMedlem sedan maj 20002 993 inlägg Re: Re: Initiera struct array som tillhör en class?
Marcus E,
Hur deklarera jag då funktionspekaren? För för mig fungerar det då inte. :( Jag har dock just skrivit om hela programmet så just nu är jag en liten bit ifrån att få in funktioner i ekvationerna igen så jag kan inte testa :)
struct EqFunction
{
char * sCallName;
tnum (*pFunc)(CEqParser & parser, int n, string *);
};
spango skrev:
Alpha II skrev:
Går det på något sätt att initiera en array som ligger inne i en klass på ett sätt som liknar detta?
EqFunction functions[] =
{
{"sqrt", &_SQRT },
{"pow", &_POW },
{"cos", &_COS },
{"sin", &_SIN },
{"tan", &_TAN },
{"nderiv", &_NDERIV },
{NULL}
};
Den sista NULL-grejen kommer inte att funka, arrayen innehåller inte pekare utan faktiska objekt.
Jo det fungerar faktiskt men NULL är inte en null-pekare utan betyder bara att structen nollställs. :)
Marcus EMedlem sedan maj 20021 466 inlägg Det kräver som sagt utökningar till C++ och för att kunna svara på den frågan behövs information om kompilatorn. Måste det vara standard C++ går det inte att göra.