2016-05-01 4 views
0

Ich versuche, eine Kampfsequenz zu machen. Momentan entwickle ich nur Prototypen.C++: Werte zuweisen Daten Mitglieder eines Objekts innerhalb einer Klasse

Was ich tun möchte, ist eine Funktion für die Kampfsequenz in einer Klasse zu definieren und verschiedene Monster zu initialisieren, mit denen zu kämpfen ist. Ich habe eine Datenstruktur in der .h-Datei mit dem Namen 'Monster' erstellt. Ich initialisiere dann den Monstertiger innerhalb der Klasse. Aber wenn ich in mein cpp gehe, um seinen Ton und sein Bild zu geben, stoße ich auf Fehler.

Was ich will, letztlich zu tun ist:

#include <iostream> 
#include "CombatSeq.h" 
int main() { 

    // Initiate Combat with a Tiger. 

    CombatSeq c; 
    c.fight(c.tiger); 
} 

Hier ist mein Code:

Die H-Datei:

#ifndef SOURCE2_COMBATSEQ_H_ 
#define SOURCE2_COMBATSEQ_H_ 

#include <iostream> 

struct monster { 
    std::string sound; 
    std::string picture; 
}; 

class CombatSeq { 
public: 
    void fight(monster t); 

    monster tiger; 

private: 

}; 
#endif /* SOURCE2_COMBATSEQ_H_ */ 

Die CPP-Datei:

#include "CombatSeq.h" 
#include <iostream> 


void CombatSeq::fight (monster t) { 
    std::cout << t.picture; 
    std::cout << t.sound; 


} 

// What would I put here to give tiger.sound & tiger.picture values? 
// I have tried: 

monster CombatSeq::tiger; 
CombatSeq::tiger.sound = "tiger.ogg"; 

// But to no avail. 

Vielen Dank für Ihre Hilfe!

Antwort

0

Es gibt viele Möglichkeiten, dies zu tun. Konstruktor könnte eine gute Wahl sein. Dadurch werden Sie bekommen, wo Sie versuchen, obwohl zu gehen, ....

int main() { 

// Initiate Combat with a Tiger. 

CombatSeq c; 
c.tiger.sound = "tiger.ogg"; 
c.tiger.picture = "tiger.jpg"; 
c.fight(c.tiger); 
} 

Das heißt, CombatSeq ein Mitglied des Typs Monster mit macht sehr wenig Sinn für mich. Es ist schwierig, einen besseren Weg ohne weitere Informationen zu empfehlen.

+0

Der Grund, ich möchte Tiger in CombatSeq (oder einer anderen Klasse) ist einfach organisiert werden. Ich möchte alle meine Monster an einen Ort laden, damit sie in verschiedenen Klassen verwendet werden können. Könnte ich vielleicht eine neue Klasse mit all meinen Monstern machen? – clorxwetwipe

+0

Eine sinnvolle Option besteht darin, sie alle zu statischen Mitgliedern der Klasse zu machen. Wie Sie es jetzt haben, wird jede Instanz von CombatSeq eigene Kopien von Tiger haben. Dies hat natürlich eine eigene Syntax und eigene Probleme, die ich Ihnen gegenüber anderen Optionen abwägen werde. – Jfevold

+0

Das ist nicht was ich suche. Ich denke, der beste Weg, dies zu formulieren, ist: Warum kann ich ein neues Monsterobjekt (Monstertiger) initialisieren, aber kann seinen Mitgliedern keine Werte zuweisen (Tiger.picture, Tiger.sound, etc.)? – clorxwetwipe