Funktion mit statischen Elementen kopieren?

23/02/2008 - 06:13 von earthnut | Report spam
Hallo,

wenn ich eine Funktion mit statischen Variablen habe, kann ich dann eine
neue Kopie von der Funktion anlegen, in der ich die Variablen veràndern
kann, ohne dass sie in der alten Funkion veràndert werden?

Also z. B.:

int A(int x)
{
static int y = 1;
y *= x;
return y;
}

A(2); A(5);
B = new copy of A;
A(3); A(7);
B(2); B(3);
...

Dabei soll jetzt ein Aufruf von B nicht mehr das Ergebnis vom nàchsten
Aufruf von A veràndern und umgekehrt.

Danke.

Bastian
 

Lesen sie die antworten

#1 zirias
23/02/2008 - 10:52 | Warnen spam
Hallo Bastian,

* Bastian Erdnuess :
A(2); A(5);
B = new copy of A;
A(3); A(7);
B(2); B(3);



Was du hier beschreibst sieht mir sehr nach Objektorientierung aus. Du
kannst natürlich die Funktion zwei mal hinschreiben mit verschiedenen
Namen, dann hat jede ihre eigene statische Variable, aber das wird wohl
nicht das sein, was du wolltest.

Ich kenne jetzt dein konkretes Problem zwar nicht, aber wenn du schon so
einen Ansatz zur Lösung hast, solltest du es vielleicht wirklich
Objektorientiert lösen, z.B.:

struct foo
{
int bar;
}
typedef struct foo Foo;

Foo* foo_new(Foo* this)
{
if (!this) { malloc .. }
this->bar = 1;
}

Foo* foo_copy(Foo* rhs)
{
malloc ...
memcpy ...
return this;
}

int foo_mult(Foo* this, int x)
{
this->bar *= x;
return this->bar;
}

Natürlich làsst sich das auch einfacher modellieren, wenn das Objekt
tatsàchlich so trivial ist wie in deinem Beispiel.

Grüße, Felix

Felix M. Palmen (Zirias) \ -PGP- /"\ ASCII Ribbon
web: http://zirias.ath.cx/ \ http://zirias.ath.cx/pub.txt \ / Campaign
my open source projects: \ FP ED9B 62D0 BE39 32F9 2488 X Against HTML In
http://zirias.ath.cx/?pg=pro \ 5D0C 8177 9D80 5ECF F683 / \ Mail And News

Ähnliche fragen