webForumDet fria alternativet

Initiera struct array som tillhör en class?

5 svar · 438 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
#1

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
#2

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
#3

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
#4

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
#5

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
#6

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.

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