xD ich dachte mir doch dass muss zu irgendwas gut sein das teil...
So, jetz ma im ernst:
Aaaaaalso, ich hab jetzt tatsächlich meine Klassen etwas umgschrieben und wollte für die befehle statt einem array eine map benutzen. Doch siehe da: ein fehler. Meine Klasse für Befehle heiß CCommand. und die Map und der iterator ließen sich auch ohne weiteres deklarieren. Aber jetzt kommt das etwas seltsame: mein pair will CCommand annehmen.
Hier ist mal meine Klassendefinition:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
//CScript.h
//Deklaration der Script-Klasse
#ifndef CSCRIPT__H
#define CSCRIPT__H
//Hauptheader einbinden
#include "Script.h"
//Script-Klasse
//
class CScript
{
//Öffentliche Attribute und Methoden
public:
//Attribute
//
//Map für Befehle
map<string, class CCommand> m_mCommandList;
map<string, class CCommand>::iterator i;
pair<string, class CCommand> m_mpNewCommand;
//String für den Namen des Aktuellen Befehls
string m_sActualCommand;
//Datei mit dem Scriptinhalt
ifstream m_fScriptFile;
//Variablen für Zeilenanzahl und Aktuelle Zeile
int m_iNumRows;
//Methoden
//
//Methode zum Laden einer Datei
void Load(string NewScript);
//Methode zum schließen der Datei
void Unload();
//Methode zum ausgeben einer Fehlermeldung, wenn der Befehl nicht gefunden wurde
void ErrorMessage();
//Methode zum finden des Aktuellen Befehls
bool FindCommand();
//Methode zum Hinzufügen eines Befehls
void AddCommand(CCommand NewCommand);
//Methode zum Ausführen des Scripts
void Run();
//Konstruktoren und Destruktor
//
//Standardkonstruktor
CScript();
//Destruktor
~CScript();
};
#endif
|
sooo, jetzt versuch ich, das zu kompilieren (natürlich sind alle anderen Dateien fertig und jetzt auch Fehlerfrei), aber bei der deklaration des pairs kommt ein etwas seltsamer Fehler:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
1>------ Rebuild All started: Project: EvilScript, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'EvilScript', configuration 'Debug|Win32'
1>Compiling...
1>CCommand.cpp
1>c:\program files\microsoft visual studio 9.0\vc\include\utility(62) : error C2079: 'std::pair<_Ty1,_Ty2>::second' uses undefined class 'CCommand'
1> with
1> [
1> _Ty1=std::string,
1> _Ty2=CCommand
1> ]
1> c:\users\felix\documents\visual studio 2008\projects\evilscript\evilscript\cscript.h(22) : see reference to class template instantiation 'std::pair<_Ty1,_Ty2>' being compiled
1> with
1> [
1> _Ty1=std::string,
1> _Ty2=CCommand
1> ]
1>c:\users\felix\documents\visual studio 2008\projects\evilscript\evilscript\ccommand.cpp(48) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1>CScript.cpp
1>EvilScript.cpp
1>Generating Code...
1>Build log was saved at "file://c:\Users\Felix\Documents\Visual Studio 2008\Projects\EvilScript\EvilScript\Debug\BuildLog.htm"
1>EvilScript - 1 error(s), 1 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
|
Soo hoffe jemand, der mehr ahnung von der STL hat als ich, weiß, was ich anders machen muss (und bevor jemand fragt: die klassendefinition bei der map, dem iterator und dem pair müssen dahin sonst gibts auch wieder fehler)