Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

1

10.03.2013, 20:06

[Gelöst]Zeiger an Funktionen übergeben

Hi Leute,

ich habe momentan ein kleines Problem, und muss dringend nochmal das Thema Zeiger wiederholen.
Villeicht kann mir jemand für den Moment weiter helfen.

Und zwar habe ich eine WinMain funktion, in welcher eine Variable auf eine Struktur erstellt wird.
Die Struktur heißt D3DConfig.

Nun erstelle ich eine Instance meiner Struktur:

C-/C++-Quelltext

1
D3DConfig Config;

Zunächst rufe ich meine Funktion auf, welche einen Zeiger auf eine D3DConfig Struktur erwartet.

C-/C++-Quelltext

1
2
3
4
5
6
7
// Funktionsprototyp:
HRESULT SettingsDialog (D3DConfig *p_Config, HINSTANCE hInst, MSG &message)

//Funktionsaufruf:
hResult = SettingsDialog (&p_Config, hInst, message);
if (hResult != NULL)
return (0);


Und nun soll aus der Funktion SettingsDialog die Funktion GetAdapter aufgerufen werden.
Das ganze sieht so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
//Funktionsprototyp:
HRESULT GetAdapter (PDIRECT3D9 pD3D, D3DConfig *Config)
//Funktionsaufruf:
if (hResult = GetAdapter (pD3D, p_Config) != 0)
{
    pD3D->Release();
    return (1);
}


Doch egal wie ich es mache, ich komme nicht an die Werte in der Struktur heran.
Könnte mir jemand erklären, was ich falsch mache und wie das ganze mit den Zeigern abläuft?

Ich werde heute Abend nochmal mein Buch rausholen und das Kapitel nochmals gründlich durchlesen.

Mit freundlichem Gruß
xXSlayerXx
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »xXSlayerXx« (12.03.2013, 20:21)


FSA

Community-Fossil

  • Private Nachricht senden

2

10.03.2013, 20:20

Du musst doch bei GetAdapter auch ein Zeige auf p_Config übergeben.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

3

10.03.2013, 20:24

Meinst du das so:

C-/C++-Quelltext

1
2
3
4
5
    if (hResult = GetAdapter (pD3D, &p_Config) != 0)
    {
        pD3D->Release();
        return (1);
    }

?

Wenn ich das so mache, bekomme ich Folgende fehlermeldung:
Fehler 3 error C2664: 'GetAdapter': Konvertierung des Parameters 2 von 'D3DConfig **' in 'D3DConfig *' nicht möglich
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

FSA

Community-Fossil

  • Private Nachricht senden

4

10.03.2013, 20:26

Ach ne sorry ich habe mich verguckt :D Gib mir einen Moment ich guck nochmal drüber ;)
Aber: Woher kommt eigentlich p_Config?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

5

10.03.2013, 20:42

p_Config bekommt die Funktion SettingsDialog von der Main Funktion übergeben.
In der Win Main heißt p_Config noch Config.
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

FSA

Community-Fossil

  • Private Nachricht senden

6

10.03.2013, 20:56

Was ist denn in der Struktur drinnen wenn du sie GetAdapater übergeben hast?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

7

10.03.2013, 21:08

eine int Variable, die mit der Anzahl der zu verfügbaren Adapter gefüllt werden soll.
Die Struktur Instance global zu machen, da so gut wie jede Funktion auf sie zugreifen muss.
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

FSA

Community-Fossil

  • Private Nachricht senden

8

10.03.2013, 21:10

Ne du sagtest ja du kommst nicht an die Werte. Also dachte ich, dass du nur Mist bekommst. Bin ich da richtig? Oder weißt du syntaktisch nicht wie du an die Werte kommst?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

xXSlayerXx

Treue Seele

  • »xXSlayerXx« ist der Autor dieses Themas

Beiträge: 111

Beruf: Technischer Produktdesigner

  • Private Nachricht senden

9

10.03.2013, 21:15

Ne ich habe den fehler heraus gefunden :dash:

ich habe folgendes geschrieben, um in die Variable zu schreiben:

C-/C++-Quelltext

1
p_Config.iAdapter = iNumAdapter;


aber natürlich muss das ganze so aussehen

C-/C++-Quelltext

1
p_Config->iAdapter = iNumAdapter;


ich habe immer ne Fehlermeldung bekommen, wenn ich die etwas in dei Struktur schreiben wollte.
Bestes Zitat aus einem Quellcode :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
/** 
Once you are done trying to ‘optimize’ this routine, 
and have realized what a terrible mistake that was, 
please increment the following counter as a warning 
to the next guy: 

total_hours_wasted_here = 11 
*/

FSA

Community-Fossil

  • Private Nachricht senden

10

10.03.2013, 21:18

Das habe ich vermutet. Dann solltest du aber sagen, dass du eine Compilerfehler bekommst.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige