Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 18:57

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

 

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

Reply
 
Old   #1
 
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   #2
 
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   #3
 
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   #4
 
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   #5
 
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   #6
 
elite*gold: 0
Join Date: Oct 2010
Posts: 381
Received Thanks: 209
black0utCpp is offline  
Thanks
2 Users
Old   #7
 
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   #8
failing on a final level
 
elite*gold: 46130
Join Date: Jun 2009
Posts: 28,498
Received Thanks: 24,594
hast du denn die klasse weapon vor der deklaration dieser methode deklariert?
ist weapon teil eines namespaces?
MrSm!th is offline  
Old   #9
 
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   #10
 
elite*gold: 0
Join Date: Oct 2010
Posts: 381
Received Thanks: 209
Bei 2 Bedingungen würde ich if else if benutzen!
black0utCpp is offline  
Old   #11
failing on a final level
 
elite*gold: 46130
Join Date: Jun 2009
Posts: 28,498
Received Thanks: 24,594
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



« Previous Thread | Next Thread »

Similar Threads
Funktion einer Scroll definiert aber wo?
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...
1 Replies - Flyff PServer - Discussions / Questions
Hilfe bei einer Quest (Spezial Funktion)
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...
8 Replies - Metin2 PServer - Discussions / Questions
[C++]Funktion einer Klasse in einer anderen Funktion der Klasse verwenden, aber wie?
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...
3 Replies - C/C++
Brauche Hilfe bei einer Errorcheck Funktion
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...
6 Replies - Guild Wars



All times are GMT +2. The time now is 18:57.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.