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

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

11

11.01.2007, 15:43

naja dann hätte ich noch ne andere frage

wenn ich da jetz ne funktion oder so hab

C-/C++-Quelltext

1
2
3
4
5
void CClass::Func (void) 
{ 
        // Blah .. 

    CClass::Func(); 
}


nach der letzten klammer '}' kann man einen semikolon schreiben oder nicht... was empfiehlt sich da? oder ist es auch wieder egal ob
so: }
oder
so: };

?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

11.01.2007, 17:22

Schreib keins, es bringt nichts und sieht nur doof aus. Genau wie das redundante void. *seitenhieb* ;)
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

13

12.01.2007, 09:17

ok ich lass es weg
aber das void schreib ich immer rein.. das is für mich um einiges lesbarer ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

12.01.2007, 09:20

Zitat von »"$nooc"«

ok ich lass es weg
aber das void schreib ich immer rein.. das is für mich um einiges lesbarer ^^


Wenn das deine Meinung ist. Um Stroustrup mal zu zitieren:

Zitat von »"Stroustrup"«


so if you want your C++ to look like C, you can use the redundant "void"
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

15

12.01.2007, 09:31

und hier kommt schon die nächste frage.. ^^

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
template <class T>
void Swap (T *pa, T *pb)
{
    T temp = *pa;
    *pa = *pb;
    *pb = temp;
} // Swap();


int main()
{
    int a = 1;
    int b = 2;

    std::cout << "A = " << a << std::endl;
    std::cout << "B = " << b << std::endl;

    std::cout << std::endl;
    std::cout << "Swap .." << std::endl;
    std::cout << std::endl;

    Swap(a, b);

    std::cout << "A = " << a << std::endl;
    std::cout << "B = " << b << std::endl;

    return 0;
} // main()


Zitat von »"Compiler"«


Fehler 1 error C2784: "void Swap(T *,T *)": template-Argument für "T *" konnte nicht von "int" hergeleitet werden.


welches problem hat er damit? O_o

zum redundanten void:
ähm naja.. kA .. ich finde es leserliche. damit is für mich sofort klar: aha das is definition/deklaration meiner funktion und kein aufruf..
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

16

12.01.2007, 09:35

Du machst den Aufruf falsch:

C-/C++-Quelltext

1
Swap(&a, &b);


Wenn du schon Zeiger verwendest solltest du auch Zeiger übergeben. Ansonsten:

C-/C++-Quelltext

1
2
3
4
5
6
7
template< typename T > 
void Swap( T& a, T& b ) 
{ 
    T tmp = a;
    a = b;
    b = tmp;
}


Und diese Frage hat nichtsmehr mit dem Threadtitel zu tum, imo.
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

17

12.01.2007, 09:45

oho ich glaub ich hab da noch einen fehler

ich hab diese template funktion in einer hpp deklariert:

C-/C++-Quelltext

1
2
template<class T>
void Swap (T *pa, T *pb);



und in der dazugehörigen cpp deklariert:

C-/C++-Quelltext

1
2
3
4
5
6
7
template <class T>
void Swap (T *pa, T *pb)
{
    T temp = *pa;
    *pa = *pb;
    *pb = temp;
} // Swap();


mach ich dabei was falsch? wiel ich bekomm nämlich folgenden fehler

Zitat von »"Compiler"«


Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl Swap<int>(int *,int *)" (??$Swap@H@@YAXPAH0@Z)" in Funktion "_main". Main.obj


ja ich weiß dass es nichts mehr mit dem thread zu tun hat, aber ich will nicht extra neue machen.. sonst geh ich als spamer durch ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

18

12.01.2007, 09:49

Template Deklaration und Definition müssen für die selbe Compiliereinheit sichtbar sein. Es gibt einige Möglichkeiten dies zu bewältigen. Die gängiste ist die Definition direkt in den Header zu übernehmen, eine weitere ist es die Definition in eine extra Datei zu legen und in den Header zu inkludieren. Die letzte ist die Trennung von Deklaration und Definition unter Verwendung von export. Leider gibt es kaum Compiler die das exportieren von Templates unterstützen.

grüße
@D13_Dreinig

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

19

12.01.2007, 09:53

was würdest du mir empfehlen?

soll ich die definitionen in den headers schreiben?
oder soll ich die extern ablagern und importieren? (wenn ja, wie geht das? ^^)

oder soll ich das je nach größe der template funktion machen?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

20

12.01.2007, 09:54

Schreib alles in den Header.
@D13_Dreinig

Werbeanzeige