Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 10:14

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

Advertisement



[C++] Vraiblen einer KLasse in die Funktion einer anderen einfügen

Discussion on [C++] Vraiblen einer KLasse in die Funktion einer anderen einfügen within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Question [C++] Vraiblen einer KLasse in die Funktion einer anderen einfügen

Hallo Leute,

Ich habe mal wieder eine Frage
Ich bin gerade dabei ein kleines Spiel(noch ist es klein ;D) zu programmieren.
Dabei bin ich auf das Problem gestoßen, dass ich gerne die Verteidigung der "User" Class in eine Berechnung(Funktion) einer "Npc" Class einbinden würde. Dies funktioniert aber weder durch:
-Einführen einer Funktion in der User class die eine Variable returned die den selben Wert besitzt, wie die Variable der Verteidigung in der Userclass
-Direktes Aufrufen der Verteidigungsvariable (das ist ja klar)
-Pointer erstellen der auf die Variable zeigt

Also meine Frage ist ob das überhaupt möglich ist, und wenn ja wie?
Mfg Simon
MrSimonKeks is offline  
Old 03/11/2011, 21:18   #2
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Code:
class A
{
   private:
      int myDefence;
 
   public:
      int GetDefence()
      {
            return myDefence;
      }
};

class B
{
   public:
      void DefenceOfA( A* objA )
      {
            int defence = objA->GetDefence();
      }

      void DefenceOfA( int defence )
      {
            //...
      }
};

//Programmablauf
void RunProgramm()
{
      A a;
      B b;
      
      b.DefenceOfA( &a );
      // Alternativ
      b.DefenceOfA( a.GetDefence() );
}
?
xNopex is offline  
Thanks
2 Users
Old 03/11/2011, 21:21   #3
 
ZackBlack's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 334
Received Thanks: 79
Quote:
Originally Posted by BliszZ View Post
Hallo Leute,
Dies funktioniert aber weder durch:
-Einführen einer Funktion in der User class die eine Variable returned die den selben Wert besitzt, wie die Variable der Verteidigung in der Userclass
So dürfte es denk ich schon gehen. Also du schreibst in der User-Class eine public get-Funktion die den Wert liefert & rufst diese in der NPC-Klasse auf.
€: War ich wohl zu langsam.
ZackBlack is offline  
Old 03/11/2011, 21:28   #4
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Ahh ok werde es gleich mal ausprobieren...
Edit: Ok funktioniert einwandfrei, danke (hatte vergessen, dass man natürlich auch eine "zeigerklasse" machen kann -.-)
MrSimonKeks is offline  
Old 03/13/2011, 20:25   #5
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Talking [C++] Vraiblen einer KLasse in die Funktion einer anderen einfügen Part 2

Hallo Epvp,
Ich sitze mal (schon) wieder an einem Problemchen...
Ich hatte schon einmal die Frage gestellt wie man Variablen einer Klasse in die Berechnung einer anderen mit hineinbezieht.Dies wurde mir auch beantwortet und hat Funktioniert.Das ist der Code:
PHP Code:
int vi_ki::hit_user(soldierdef,int hit_type){
    
int damage=0;
    
int strength_dmg=vi_ki::strength_ki;
    
int armor_us=def->re_armor();
    
damage=strength_dmg-armor_us;
    
int dmg_p=def->re_dmg_points(hit_type);
    
damage=damage*dmg_p;
    return 
damage;

Nun wollte ich das bei einer anderen Funktion genauso machen:
PHP Code:
int vi_ki::build_ki_type(weapondmgint type){(...)} 
Nun reagiert der Compiler aber merkwürdig. Wenn ich auf die rot unterstrichene Funktion den Mauszeiger draufhalte kommt der Fehler:
int vi_ki::build_ki_type(weapon* dmg,int type)

Error: Die Deklaration ist nicht mit "int vi_ki::build_ki_type(<error-type>* dmg,int type) (in Zeile bla) kompatibel.

Also gehe ich in die dazugehörige Headerdatei und was sehe ich bei dem vermeindlichen <error-type> ? Ich sehe class weapon...
Wenn ich dies jetzt Compiliere kommt folgender Fehler:
Code:
1>d:\users\simon\appdata\desktop\programme von mir\apocalyps\apocalyps\computerki.h(32): error C2061: Syntaxfehler: Bezeichner 'weapon'
In class weapon steht:
PHP Code:
class weapon{
private:
    
int type_w;
    
int dmg;
public:
    
int weapon_re_dmg();

}; 
Ich wollte fragen ob ich etwas falsch gemacht habe und wenn was. Oder ob der Compiler spinnt und falls wie ich den Fehler behebe.
Mfg Simon

EDIT: Bzw. ihr könnt mir auch einfach nur schreiben ob es an meinem Code liegt oder nicht, dass würde mir schon weiter helfen ;D
MrSimonKeks is offline  
Old 03/14/2011, 14:06   #6
 
black0utCpp's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 381
Received Thanks: 210
black0utCpp is offline  
Thanks
2 Users
Old 03/14/2011, 14:56   #7
 
ZackBlack's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 334
Received Thanks: 79
Quote:
Originally Posted by BliszZ View Post
Hallo Epvp,


Nun wollte ich das bei einer anderen Funktion genauso machen:
PHP Code:
int vi_ki::build_ki_type(weapondmgint type){(...)} 
Nun reagiert der Compiler aber merkwürdig. Wenn ich auf die rot unterstrichene Funktion den Mauszeiger draufhalte kommt der Fehler:
int vi_ki::build_ki_type(weapon* dmg,int type)

Error: Die Deklaration ist nicht mit "int vi_ki::build_ki_type(<error-type>* dmg,int type) (in Zeile bla) kompatibel.

Also gehe ich in die dazugehörige Headerdatei und was sehe ich bei dem vermeindlichen <error-type> ? Ich sehe class weapon...
Wenn ich dies jetzt Compiliere kommt folgender Fehler:
Code:
1>d:\users\simon\appdata\desktop\programme von mir\apocalyps\apocalyps\computerki.h(32): error C2061: Syntaxfehler: Bezeichner 'weapon'

Also, ich vermute mal das die Funktion ne neue Klasse erstellen soll und du Schaden & Typ als Parameter übergeben willst. Dann würd ich das so schreiben: int vi_ki::build_ki_type(int dmg,int type).
Sry wenn ich mich täusche.
int vi_ki::build_ki_type(weapon* dmg,int type)
Wenn du das so machst musst du ja erst mal ne Klasse erstellen dann darauf den Pointer übergeben. Also dmg->dmg wär dann der Schaden.
ZackBlack is offline  
Old 03/14/2011, 15:48   #8


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
hast du denn die klasse weapon vor der deklaration dieser methode deklariert?
ist weapon teil eines namespaces?
MrSm!th is offline  
Old 03/14/2011, 16:48   #9
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Quote:
Originally Posted by MrSm!th View Post
hast du denn die klasse weapon vor der deklaration dieser methode deklariert?
ist weapon teil eines namespaces?
Nein ist kein Namespace und es hat sich grad erledigt durch eure Hilfe, danke!

Aber noch eine andere Frage wenn man 2 Bedingungen mit integer machen möchte, was ist besser?
Code:
Entweder:If bzw. else if
Oder:switch (finde ich persönlich bequemer bzw.schöner im code)
Oder macht das keinen Unterschied vom Speicher etc.?


EDIT: ZackBlack das hatte ich nicht vor ich wollte die Verteidigung der jeweiligen Instanz einfach nur mit einbeziehen von der Kklasse vi_ki.
MrSimonKeks is offline  
Old 03/14/2011, 17:17   #10
 
black0utCpp's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 381
Received Thanks: 210
Bei 2 Bedingungen würde ich if else if benutzen!
black0utCpp is offline  
Old 03/14/2011, 20:34   #11


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by BliszZ View Post
Nein ist kein Namespace und es hat sich grad erledigt durch eure Hilfe, danke!

Aber noch eine andere Frage wenn man 2 Bedingungen mit integer machen möchte, was ist besser?
Code:
Entweder:If bzw. else if
Oder:switch (finde ich persönlich bequemer bzw.schöner im code)
Oder macht das keinen Unterschied vom Speicher etc.?


EDIT: ZackBlack das hatte ich nicht vor ich wollte die Verteidigung der jeweiligen Instanz einfach nur mit einbeziehen von der Kklasse vi_ki.
1. sieht if-else if bei nur zwei abfragen imo schöner aus
2. kommt es auf die compileroptimierung an. in manchen fällen ist der switch-case code da effizienter

ist aber bei diesem einen fall sowas von egal...nimm das was du schöner findest :P
soweit ich weiß, gilt if-else if aber in diesem fall als besserer stil
MrSm!th is offline  
Reply


Similar Threads Similar Threads
Funktion einer Scroll definiert aber wo?
01/05/2011 - Flyff Private Server - 1 Replies
Hallo, ich hätte da mal eine kleine Frage! Die ganze CS Scrolls und so habe ja alle eine Funktion, aber ich habe schon überall geschaut wo dies definiert wurde ist. Wurde das in der Source definiert, wenn ja wo? Ich würde mich über eine Antwort freuen! mfg ocram | Marco //EDIT: Habe es gefunden wo es definiert wurde
Hilfe bei einer Quest (Spezial Funktion)
07/29/2010 - Metin2 Private Server - 8 Replies
Hallo zusammen :) und zwar möchste ich einer NPC eine bestimmte funktion geben ! Ist eig. ne simple funktion nur ich weiß nicht wie ich das machen soll xD Kommen wir mal jetzt zur der Funktion: Wenn man auf die NPC klickt soll ein kleines Fenster erscheinen. Dort soll z.B. GM stehen. Wenn man dann drauf klickt soll eine Passwortabfrage kommen (könnte z.B LagerPW sein oder so) ! Wäre so was möglich? Wenn ja wie kann man das machen ? Helfer bekommen reichlich Thx :D
[C++]Funktion einer Klasse in einer anderen Funktion der Klasse verwenden, aber wie?
07/25/2010 - C/C++ - 3 Replies
Mein Problem ist eigentlich recht simpel und die Lösung wahrscheinlich auch. Da ich bisher fast 0 mit Klassen am Hut hatte, wollte ich mich doch mit dem Thema anfreunden und hatte gleich angefangen: int test::Funktion2() { int temp; cin>>temp; return temp; }
Brauche Hilfe bei einer Errorcheck Funktion
02/03/2008 - Guild Wars - 6 Replies
Hallo, Ich wollte mal für einen Bot eine Funktion schreiben mit der er selbstständig erkennt wenn er einen Error hatte. Das ganze sollte eigentlich nicht sonderlich schwer sein dachte ich mir einfach mit Texmod das Fenster um Charakter Auswahl und das Fenster auf dem normal der Eye of the North Schriftzug steht färben und dann an einer stelle halt eine Pixel Abfrage machen. Aaaber: ich kenne mich nicht wirklich aus mit Programmieren im allgemeinen und mit AutoIT. Und so machte das...



All times are GMT +2. The time now is 10:14.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.