Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++: Funktion außerhalb der Klasse aufrufen mit gl. Namen (https://www.delphipraxis.net/26811-c-funktion-ausserhalb-der-klasse-aufrufen-mit-gl-namen.html)

Tubos 29. Jul 2004 18:52


C++: Funktion außerhalb der Klasse aufrufen mit gl. Namen
 
Hallo;

ich bin gerade dabei für meine Programme ein paar Funktionen der WinSock-API für Streams (winsock2.h) in eine Klasse zu kapseln.
Dabei habe ich das Problem dass sowohl bei der WinSock-API als auch in meiner Klasse eine Funktion namens connect existiert.
In der Memberfunktion connect meiner Klasse rufe ich das connect der WinSock-API auf.
Doch der Compiler versteht unter connect an dieser stelle nur das connect meiner eigenen Klasse.
Wie kann ich explizit angeben, dass ein anderes connect gemeint ist?

NicoDE 29. Jul 2004 19:31

Re: C++: Funktion außerhalb der Klasse aufrufen mit gl. Name
 
Da sich die API-Funktionen meist im globalen Scope befinden, wird meist folgende Variante verwendet...
Kurzfassung (C++):
Code:
::foo();
Langfassung (C/C++):
Code:
#ifndef USE_GLOBAL_NAMESPACE
#ifdef _cplusplus
#define USE_GLOBAL_NAMESPACE ::
#else
#define USE_GLOBAL_NAMESPACE
#endif
#endif

(* ... *)

USE_GLOBAL_NAMESPACE(foo)();

SirThornberry 29. Jul 2004 20:05

Re: C++: Funktion außerhalb der Klasse aufrufen mit gl. Name
 
also unter delphi reicht es einfach den unit namen vorran zu fügen.
Delphi-Quellcode:
unitname.funktionsname
ob jedoch unter C++ geht weiß ich nicht

Tubos 30. Jul 2004 17:45

Re: C++: Funktion außerhalb der Klasse aufrufen mit gl. Name
 
Das bezweifle ich, da es in C++ keine Units gibt ;)
Es gibt nur Include-Dateien (oder Header), die werden vor dem Kompilieren in den Code des Hauptprogramms "eingefügt" - allerdings werden sie nicht ständig neu kompiliert, sondern nur dann, wenn sich etwas geändert hat. (das ist doch richtig so, oder? :gruebel: )

Aber die C++-Lösung funktioniert.
Danke!

Die C-Variante brauche ich nicht weil mein Header nur mit C++ funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz