C++ Verständnisproblem :(

08/18/2010 11:41 syslen#1
Gelöst

Hi,

manchmal wenn ich durch source codes rumsurfe immer wieder folgendes Konstrukt was ich grad iwie net ganz kapiere

Beispielhaft mal das
PHP Code:
#include <stdio.h>
#include <dlfcn.h>
#include "ctest.h"

int main(int argcchar **argv
{
   
void *lib_handle;
   
double (*fn)(int *);
   
int x;
   
char *error;

   
lib_handle dlopen("/opt/lib/libctest.so"RTLD_LAZY);
   if (!
lib_handle
   {
      
fprintf(stderr"%s\n"dlerror());
      exit(
1);
   }

   
fn dlsym(lib_handle"ctest1");
   if ((
error dlerror()) != NULL)  
   {
      
fprintf(stderr"%s\n"error);
      exit(
1);
   }

   (*
fn)(&x);
   
printf("Valx=%d\n",x);

   
dlclose(lib_handle);
   return 
0;

Der eig code ist mir klar, aber dieses double (*fn)(int) kapier ich einfach überhapt net, will der einen integer expliziet umwandeln oder wie ich versth das einfach net.
oder dies
PHP Code:
void ctest1(int *); 
Warum nur einen Zeiger auf int als Parameter, wie verwende ich solche funktionen,

Hoffe Ihr könnt mir helfen
08/18/2010 12:31 Bot_interesierter#2
Also erstmal ist das eher C als C++, jetzt zu deinen Fragen, fn ist ein Funktionszeiger, warum er als Rückgabewert double annimmt kann ich dir nicht sagen, ein void würde nach dem Funktionsprototypen wohl eher passen.
Zur zweiten Frage, in der Funktionsdeklaration musst du die Namen der Argumente nicht angeben, das muss erst bei der Definition geschehen.

hier mal ein Beispiel:
[Only registered and activated users can see links. Click Here To Register...]
08/18/2010 12:51 flow_getter#3
genau das wuerde ich auch sagen.
08/18/2010 15:11 syslen#4
Ja sry das is c hab ich vertan :P
Manchmal verwechsle ich die vom Namen her sry

Aber danke dir für deine Hilfe
Ich hab da noch was, was ich nicht so ganz verstehe.
Dieses Problem tat sich auf als ich mal den Source von Kwin mir reingezogen hab. Code ist komplett in OO-C++.

Hier mal beispielhaft von mir gekritzelt :D
PHP Code:
a->func()->true
oder aus den orginal source 
int level 
c->rules()->checkFSPoptions->focusStealingPreventionLevel ); 
Ich nehme mal an a ist in dem Fall die Klasse. Mit den -> Operator greift es auf die Methode func() zu. Soweit stand es bei mir auch im Buch :D
Also ist der Rückgabewert der jetze eine Klasse/Struktur und kann man jetzt so mit einer Zeile darauf zugreifen.
Dann hätte ich eig soweit keine Fragen mehr
08/18/2010 15:55 MrSm!th#5
Quote:
Originally Posted by syslen View Post
Ja sry das is c hab ich vertan :P
Manchmal verwechsle ich die vom Namen her sry

Aber danke dir für deine Hilfe
Ich hab da noch was, was ich nicht so ganz verstehe.
Dieses Problem tat sich auf als ich mal den Source von Kwin mir reingezogen hab. Code ist komplett in OO-C++.

Hier mal beispielhaft von mir gekritzelt :D
PHP Code:
a->func()->true
oder aus den orginal source 
int level 
c->rules()->checkFSPoptions->focusStealingPreventionLevel ); 
Ich nehme mal an a ist in dem Fall die Klasse. Mit den -> Operator greift es auf die Methode func() zu. Soweit stand es bei mir auch im Buch :D
Also ist der Rückgabewert der jetze eine Klasse/Struktur und kann man jetzt so mit einer Zeile darauf zugreifen.
Dann hätte ich eig soweit keine Fragen mehr
Das geht nicht o.ô
Du kannst der einer Methode c keinen bool Wert zuweisen.
08/18/2010 16:00 syslen#6
ja weil ich das net ganz verstanden hab
und warum is c aufeinaml ne Methode o.O
08/18/2010 16:06 MrSm!th#7
Oh entschuldige, habe mich verlesen.
Du hast ja geschrieben "Methode func".

wenn func() eine Klasse/Struct zurückgibt und c ein Member von dieser ist, dann geht das so, ja.
08/18/2010 16:11 syslen#8
OK Danke! *thx drück*