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

1

29.02.2008, 18:01

Wie kann ich sowas hier kürzer schreiben?

Kann ich sowas kürzer schreiben?


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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream>
#include <windows.h>
#include <string>
#include <fstream>

using namespace std;

class CErstellen
{
public:

    string dname;
    ofstream a;

    void Schreiben()
    {
        a.open(dname.c_str(), ios_base::out);
        a.close();
        
    }

};


int main()
{
    CErstellen a; //1

    CErstellen b;
    CErstellen c;
    CErstellen d;
    CErstellen e;
    CErstellen f;
    CErstellen g;
    CErstellen h;
    CErstellen i;
    CErstellen j; //10

    CErstellen k;
    CErstellen l;
    CErstellen m;
    CErstellen n;
    CErstellen o;
    CErstellen p;
    CErstellen q;
    CErstellen r;
    CErstellen s;
    CErstellen t;


    

    a.dname = "C:\\1.bat";
    b.dname = "C:\\2.bat";
    c.dname = "C:\\3.bat";
    d.dname = "C:\\4.bat";
    e.dname = "C:\\5.bat";
    f.dname = "C:\\6.bat";
    g.dname = "C:\\7.bat";
    h.dname = "C:\\8.bat";
    i.dname = "C:\\9.bat";
    j.dname = "C:\\10.bat";
    k.dname = "C:\\11.bat";
    l.dname = "C:\\12.bat";
    m.dname = "C:\\13.bat";
    n.dname = "C:\\14.bat";
    o.dname = "C:\\15.bat";
    p.dname = "C:\\16.bat";
    q.dname = "C:\\17.bat";
    r.dname = "C:\\18.bat";
    s.dname = "C:\\19.bat";
    t.dname = "C:\\20.bat";



    a.Schreiben();
    b.Schreiben();
    c.Schreiben();
    d.Schreiben();
    e.Schreiben();
    f.Schreiben();
    g.Schreiben();
    h.Schreiben();
    i.Schreiben();
    j.Schreiben();
    k.Schreiben();
    l.Schreiben();
    m.Schreiben();
    n.Schreiben();
    o.Schreiben();
    p.Schreiben();
    q.Schreiben();
    r.Schreiben();
    s.Schreiben();
    t.Schreiben();


    
    return 0;

}

2

29.02.2008, 18:11

C-/C++-Quelltext

1
2
3
4
5
CErstellen* CArrayErstellen = new CErstellen[20];

CArrayErstellen[0].dname = "C:\\1.bat"; 
...
CArrayErstellen[0]->Schreiben();


Das Ganze kann man auch wunderbar in eine Schleife packen. ;)
Freigeben des mit new reservierten Speichers nicht vergessen.
delete[] CArrayErstellen;

3

29.02.2008, 18:36

alles steht dann in der main schleife auch CarrayErstellen? muss ich dies nicht irgendwo definieren?

4

29.02.2008, 18:46

wenn ich -> schreiben aufruf komm immer: Der Typ 'CErstellen' hat keinen ueberladenen Elementoperator '->'

5

29.02.2008, 18:46

main schleife??? :)

Ja, du definierst eine Variable z.B. namens CArrayErstellen vom Datentyp CErstellen. Ob du das in die Main-Funktion packst oder nach der Deklaration deiner Klasse (also vor Main) bleibt dir überlassen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

29.02.2008, 18:49

Wieso auf den Heap? Ein normales Array tuts doch auch:

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


static inline const char* va( const char* fmt, ... )
{
    static char buffer[ 1024 ] = { 0 };
    va_list argptr;

    va_start( argptr, fmt );
    vsprintf( buffer, fmt, argptr );
    va_end( argptr );
    
    return buffer;
}

class CErstellen
{
public:
    std::string dname;

    void Schreiben()
    {
        printf( "%s\n", dname.c_str() );
    }

};


int main()
{
    CErstellen foo[ 20 ];

    for ( int i = 0; i < 20; ++i )
        foo[ i ].dname = va( "c:\\%d.bat", i+1 );

    for ( int i = 0; i < 20; ++i )
        foo[ i ].Schreiben();

    _getch();
}
@D13_Dreinig

7

29.02.2008, 18:54

Zitat von »"David_pb"«

Wieso auf den Heap? Ein normales Array tuts doch auch:

Wohl wahr. Viele Wege nach Rom...

Jetzt haste ihm ja die ganze Arbeit abgenommen. :)

8

29.02.2008, 18:54

x_X davor hab ich am meisten angst....
jetzt erklärt ihr mir mal alles gaaanz schön was ihr da oben im code gemacht habt^^
1. was ist das:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
static inline const char* va( const char* fmt, ... ) 
{ 
    static char buffer[ 1024 ] = { 0 }; 
    va_list argptr; 

    va_start( argptr, fmt ); 
    vsprintf( buffer, fmt, argptr ); 
    va_end( argptr ); 
    
    return buffer; 
} 

versteh das komplett nicht^^
2.
was heißt foo
3. was ist _gech();

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

29.02.2008, 18:57

Zitat von »"TrikkieMikkie"«

Zitat von »"David_pb"«

Wieso auf den Heap? Ein normales Array tuts doch auch:

Wohl wahr. Viele Wege nach Rom...

Jetzt haste ihm ja die ganze Arbeit abgenommen. :)


Speicher auf dem Heap anfordern ist aber viel langsamer! :)

@DEATH:

1. Eine Funktion :p
2. foo ist der Name des Arrays dessen Inhalt 20 Elemente vom Typ CErstellen sind
3. _getch() => http://msdn2.microsoft.com/en-us/library/078sfkak.aspx
@D13_Dreinig

10

29.02.2008, 19:11

das das ne funktion sein könnte, hätte ich mir denken könne, nur was macht sie genau?
_getch brauch ich nit in dem programm, es soll kurz starten und sofort sich wieder beende.

Werbeanzeige