Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Übergabe einer Struktur

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.07.2004, 11:09 Uhr
~Veritas
Gast


Hallo feunde des gepflegten Quälcodes,

Ich hab da ein Problem mit Strukturen:shock: :
und ich weiß nicht mal wie ich es rcihtig erklären kann *hm*

Also ich hab da eine Struktur:

struct SAVEDREFCLUSTERS
{
float red;
float green;
float blue;
bool isRef;
};

und eine Instanz:

struct SAVEDREFCLUSTERS savedRefClusters[100];

diese steht sagen wir in der CreateCluster.cpp global.

dann hab ich eine Struktur in der parameter.cpp global. :

struct strCLUSTERMATRIX
{
float red; // Rotwert des Mittelpunktes
float green; // Grünwert des Mittelpunktes
float blue; // Blauwert des Mittelpunktes
bool isRef; // gibt an ob Cluster zur Referenz gehört

};

und eine Variable:

strCLUSTERMATRIX *refCluster;

jetzt hab ich eine Funktion in der paramter.cpp:

FsaveClusters(struct strCLUSTERMATRIX *cluster)
{
for(int i=0;i<anzRefClustInStruct;i++)
{
cluster[i] = refCluster[i];
}
}

Die soll mir die Werte in der struktur *refCluster in die savedRefClusters[100] abspeichern.

die wird nun in der CreateCluster.cpp aufgerufen:

FSaveClusters((struct strCLUSTERMATRIX *) savedRefClusters);

Das is jetzt alles ziemlich kryptisch und sogar noch ein bissl vereinfacht.

Aber mein Problem ist das das Original Feld savedRefClusters[100] nicht vereändert wurde, bzw. der erste Cluster( savedRefCluster[0]) wurd abgespeichert aber der Rest nicht und ich versteh einfach nicht warum.

Also wie muss ich in Gottes Namen den Aufruf der Funktion machen damit das gesamte Original savedRefClusters[100] überschrieben wird mit den Werten die in *refCluster stehen???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.07.2004, 11:23 Uhr
~Veritas
Gast


mal anders gefragt wie übergebe ich nicht eine Kopie dieser Struktur sonder das Original und veränder dieses ??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.07.2004, 11:41 Uhr
freshman



kann es sein, daß:

C++:
struct SAVEDREFCLUSTERS
{
float red;
float green;
float blue;
bool isRef;
};
//und
struct strCLUSTERMATRIX
{
float red; // Rotwert des Mittelpunktes
float green; // Grünwert des Mittelpunktes
float blue; // Blauwert des Mittelpunktes
bool isRef; // gibt an ob Cluster zur Referenz gehört
};


genau dasselbe ist?? was soll das denn? eines davon ist überflüßig
verwend doch die code-tags, sonst kann man nix erkennen
kannst es ja versuchen, indem du einen Zeiger auf die Struktur übergibst
nimm Abstand von globalen Variablen; diese sind meißtens durch etwas besseres design nicht nötig
--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.07.2004, 12:06 Uhr
freshman



...und weiter geht es:
was soll denn das sein:

C++:
FSaveClusters((struct strCLUSTERMATRIX *) savedRefClusters);

in den ganzen Funktions köpfen braucht du übrigens das Schlüsselwort struct nicht
ist alles etwas verwirrend geschildert von Dir.

C++:
typedef
struct
{
float red;
float green;
float blue;
bool isRef;
}Cluster;

//ich hoffe die Syntax vom typedef stimmt??
und dann hben wir einen Datentyp namens Cluster. Verwende zB so:

C++:
Cluster savedRefClusters[100];

--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.07.2004, 21:37 Uhr
stephanw
localhorst


Wenn C++, dann gehts auch ohne typedef:
C++:
struct Cluster
{
float red;
float green;
float blue;
bool isRef;
};


Und Übergabe nicht als Kopie geht als Übergabe per Referenz:

C++:
void foo1 (Cluster& cluster)
{
    cluster.red = 1.0f;
}


oder als Zeiger, was technisch aufs gleiche hinausläuft, nur durch andere Syntax komplizierter ist:

C++:
void foo2 (Cluster* cluster)
{
    cluster->red = 1.0f;
}


--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: