Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 20:48

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ Verständnisproblem :(

Discussion on C++ Verständnisproblem :( within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
syslen's Avatar
 
elite*gold: 0
Join Date: Dec 2009
Posts: 343
Received Thanks: 74
C++ Verständnisproblem :(

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
syslen is offline  
Old 08/18/2010, 12:31   #2
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
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:
Bot_interesierter is offline  
Thanks
1 User
Old 08/18/2010, 12:51   #3
 
elite*gold: 6
Join Date: Nov 2009
Posts: 217
Received Thanks: 106
genau das wuerde ich auch sagen.
flow_getter is offline  
Old 08/18/2010, 15:11   #4
 
syslen's Avatar
 
elite*gold: 0
Join Date: Dec 2009
Posts: 343
Received Thanks: 74
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
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
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
syslen is offline  
Old 08/18/2010, 15:55   #5


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,905
Received Thanks: 25,407
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
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
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.
MrSm!th is offline  
Old 08/18/2010, 16:00   #6
 
syslen's Avatar
 
elite*gold: 0
Join Date: Dec 2009
Posts: 343
Received Thanks: 74
ja weil ich das net ganz verstanden hab
und warum is c aufeinaml ne Methode o.O
syslen is offline  
Old 08/18/2010, 16:06   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,905
Received Thanks: 25,407
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.
MrSm!th is offline  
Thanks
1 User
Old 08/18/2010, 16:11   #8
 
syslen's Avatar
 
elite*gold: 0
Join Date: Dec 2009
Posts: 343
Received Thanks: 74
OK Danke! *thx drück*
syslen is offline  
Reply




All times are GMT +1. The time now is 20:48.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.