Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

20.06.2008, 16:27

Und das class vor den Klassentyp zu schreiben ... gewöhn es dir ab!
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

12

20.06.2008, 16:28

naja, die kennt er ja offensichtlich, da ja die map und der iterator sie gefunden haben und die datei "Script.h'" sieht so aus:

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
//Script.h

//Deklaration Allgemeiner Funktionen, Variablen und Datentypen

#ifndef SCRIPT__H
#define SCRIPT__H

//Header einbinden

#include <windows.h>
#include <string>
#include <map>
#include <cstdlib>
#include <cstdio>
#include <fstream>
#include <iostream>

//Namespace std wird benutzt

using namespace std;

//Aufzählung der Parametertypen

enum EPARAMETERTYPE{
    PT_STRING = 0,      //Stringparameter

    PT_INTEGER = 1,     //Ganzzahlige Parameter

    PT_FLOAT = 2        //Fließkommaparameter

};

//Scriptdateien einfügen

#include "CCommand.h"
#include "CScript.h"

#endif


EDIT:

@ Deviloper:

Zitat


Deviloper:
Und das class vor den Klassentyp zu schreiben ... gewöhn es dir ab!

Zitat


Ich:
(und bevor jemand fragt: die klassendefinition bei der map, dem iterator und dem pair müssen dahin sonst gibts auch wieder fehler)

13

20.06.2008, 17:15

Wieso hast du 2 HeaderÖ Wieso einmal Scipt.h und einmal CSkript.hÖ
Wenn du damit versuchst, irgendwelche Fehler yum umgehen, ich bin mir fast sicher, dass das sehr viel eleganter geht.
Lieber dumm fragen, als dumm bleiben!

Ba'el

Alter Hase

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

14

20.06.2008, 17:22

OT das hat mich auch irritiert /OT

erstens, das class brauch man nicht ;)

zweitens:
also ich hab jetzt noch net wirklich viel mit maps gemacht, aber grad mal nen experiment

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once

#include <string>
#include <map>

class a;

class b
{
    std::map<std::string, a> test; //kein fehler

    std::pair<std::string, a> test2; //fehler

};

class a{};


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#pragma once

#include <string>
#include <map>

class a{};

class b
{
    std::map<std::string, a> test;//kein fehler

    std::pair<std::string, a> test2;//kein fehler

};


sprich beim pair muss im gegensatz zur map die Klasse schon definiert sein, kA warum (wie gesagtn noch nich' wirklich damit gearbeitet ...)
aktuelle Projekte:
Ruby on Rails
XNA &amp; Touchless
Progr. mobiler Endgeräte (GPS Trekking)

15

20.06.2008, 17:23

najaaaa, ehrlich gesagt hatte ich gar nicht mal an die fehlervermeidung gedacht sondern mir ist einfach kein Name eingefallen, in welcher datei ich alle Header einbinden kann und so sachen

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

16

20.06.2008, 17:26

Zitat von »"Mr. Data"«


@ Deviloper:

Zitat


Deviloper:
Und das class vor den Klassentyp zu schreiben ... gewöhn es dir ab!

Zitat


Ich:
(und bevor jemand fragt: die klassendefinition bei der map, dem iterator und dem pair müssen dahin sonst gibts auch wieder fehler)


Das kann nicht sein, wenn du alles schön organisierst.

Also räum da mal auf, gib anständige Namen für die Dateien, entferne alle includes, die zwischen deinen Dateien sind und dann include genau dort den Header, wo du das jeweilige Definition brauchst.
Du solltest nur so viel, wie du brauchst includen.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

17

20.06.2008, 18:27

Es gibt da paar (eigentlich) einfache Regeln:

1. Für Zeiger und Referenzen auf ein Objekt reicht es, vorher ne deklaration zu haben
2. Für Objekterstellung brauch man die Definition (in std::pair is das Objekt direkt drin, in std::map soweit ich weiss nur Verweise auf das Objekt)

3. Bei Templates wird diese Anforderung räumlich verschoben: anstatt die Deklaration / Definition schon vor der Templatedefinition zu fordern reicht es, wenn das entsprechende Teil beim konkreten Einsatz vom Template bekannt ist

Werbeanzeige