strukturen von funktionen deklarieren lassen

casteletti

Grünschnabel
hallo forum,

hat jemand von euch einen tip, wie man
strukturen z.b. von einer funktion deklarieren lassen kann?

z.b. etwas wie

struct test{
int zahl;
};

test funktion(string name){
int a = 10;
test name;
name.zahl = a;
return name;
}

der code funktioniert natürlich nicht.
ist sowas in der art möglich?

viele grüße
mario
 
Hi und Willkommen im Forum!

Dein obiger Code sollte laufen, wenn du das "string name" entfernst.
das wird nirgends gebraucht, und ausserdem gibt es dann ein
"string name" und ein "test name", die namen dürfen nicht gleich sein

Gruß
 
hallo,

genau das ist das problem. die string variable, die
der funktion übergeben wird, soll der name der struktur sein,
welche die funktion erzeugt.
kann man so eine art platzhalter verwenden,
in den dann ein wert eingesetzt wird?

viele grüße mario
 
Moin Mario,

verstehe ich das richtig?
Du willst den zu deklarierenden Namen des Structs dynamisch übergeben
Das kann nicht funktionieren, denn er muss zur Compilezeit bekannt sein!!

Wie sheel schon schrieb, deklarierst Du ja zwei Variablen mit unterschiedlichem Typ, aber gleichem Namen - sowas geht leider nicht !!

Ich sehe auch nicht so ganz den Sinn des Ganzen! Wenn es schon übergeben werden muss, dann erstell' doch einfach vor dem Aufruf eine Variable des structs und übergib' diese beim Aufruf an Deine Testfunktion!
Etwa so:
Code:
struct test
{
    int zahl;
} teststruct;

teststruct setTestStruct( teststruct tempStruct )
{
    int a = 10;
    tempStruct.zahl = a;
    return tempStruct;
}
.....
teststruct struct_Temp;
teststruct struct_TempNeu = setTestStruct( struct_Temp );
.....
// tue_irgendwas mit 'struct_TempNeu'
Ist aber auch nicht sehr elegant ;-)

Gruß
Klaus
 
Zuletzt bearbeitet:
hallo,

danke für die antworten.
schade dass man strukturen nicht dynamisch erzeugen kann.
was macht man denn, wenn man verschiedene datensätze
erst zur laufzeit angeben kann?
z.b. ein programm wo

name
telefonnummer
farbedesautos

von 1000 leuten in einer dem jeweiligen namen zugeordneten struktur-variable
gespeichert werden sollen, und diese erst zur laufzeit daten liefert,
weil z.b. erst bei der programmausführung eine eingabe der daten erfolgen soll?

viele grüße
mario
 
Moin Mario,

nein, dass hast Du falsch verstanden!
Selbstverständlich kannst Du die Struktur zu Laufzeit erstellen und auch dort mit Daten füllen - nur der Bezeichner der Struktur muss zur Compilezeit bekannt sein

Nehmen wir ein ganz einfaches Beispiel :
Code:
int iZahl = 0;
Auch hier muss der Bezeichner der integer-Variable - nämlich iZahl - zur Compilezeit bekannt sein und kann nicht zur Laufzeit verändert werden. Lediglich der Inhalt/Wert der Variablen ist variabel!! Ein solcher Bezeichner ist ja nichts anderes, als ein Platzhalter für den eigentlichen Wert (hier also '0')!!

Und nichts anderes hast Du in Deinem Code versucht! Der Datentyp ist dort eben "struct test" und der Bezeichner des Structs ist "name" - und somit nicht änderbar! Die die konkerten Zahlenwerte im Struct natürlich schon!

Ich hoffe, dass dies verständlich war .... ;-)

tschüss
Klaus
 
guten abend,

habs verstanden...
danke. habe festgestellt, dass im speicher namen schall und rauch
sind. man kann ja die strukturen in arrays oder vektoren
ablegen und diese dynamisch erzeugen oder erweitern.
habe zu kompliziert gedacht...

schönes wochenende euch allen
mario
 
Zurück