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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

09.01.2008, 14:06

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<class T>
inline void ptrDelete(T*& ptr)
{
  delete ptr;
  ptr = 0;
}


int main()
{
  int* blub = new int;

  ptrDelete(blub);
}


funktioniert bei mir ohne probleme (MSVC 2005).

ich würd auf jeden fall die methode mit der referenz dem doppelpointer vorziehen. allein schon, weil bei nem doppelpointer folgendes möglich wäre:

C-/C++-Quelltext

1
ptrDelete(0);


mit referenz geht sowas nicht...

$nooc: welcher compiler? zeig mal den ganzen code oder zumindest etwas mehr davon pls...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

09.01.2008, 14:08

Zitat von »"Faule Socke"«

David das argument liegt auf der hand was diskutierst du noch: Der Code von oben funktioniert nicht, reicht das nicht?


Die Diskussion ist doch ganz unabhängig davon ob der Code geht oder nicht!

Zitat von »"Faule Socke"«


@topic: machs einfach so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
template <typename T>
inline void ptrDelete( T*& ptr )
{
    delete *ptr;
    *ptr = NULL;
}

    private: System::Void ShutDown () {

                 ptrDelete(&m_pServer);
                 ptrDelete(&m_pServerThread);

             }


So sollte es gehen.

Socke


Was ist denn das für ein Unsinn?
@D13_Dreinig

CodingCat

1x Contest-Sieger

Beiträge: 420

Beruf: Student (KIT)

  • Private Nachricht senden

13

09.01.2008, 14:16

Zitat von »"dot"«

ich würd auf jeden fall die methode mit der referenz dem doppelpointer vorziehen. allein schon, weil bei nem doppelpointer folgendes möglich wäre:

C-/C++-Quelltext

1
ptrDelete(0);


Unter diesem Aspekt gebe ich dir recht. Ich halte eine derartige Helferfunktion trotzdem für Unfug, da es wie gesagt einfach unüblich ist, Zeiger über Referenzen zu manipulieren, und somit anderen Codelesern den Code genauso wie Macros unverständlicher macht.

@David_pb
Das ist vermutlich ein verunglückter Doppelzeiger. *g*

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

14

09.01.2008, 16:28

Uups... :D :D

Habs mal gefixt xD


Socke

15

09.01.2008, 16:39

Zitat

template <typename T>
inline void ptrDelete( T*& ptr )
{
delete *ptr;
*ptr = NULL;
}

private: System::Void ShutDown () {

ptrDelete(&m_pServer);
ptrDelete(&m_pServerThread);

}


Ich finde man sollte sich entscheiden wie man die Klammern setzt und es beibehalten und es nicht mischen.
Entweder

C-/C++-Quelltext

1
2
3
void my_func_name()
{
}

oder

C-/C++-Quelltext

1
2
void my_func_name(){
}
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

16

09.01.2008, 17:19

joa, das stimmt schon. das ist eigentlich aber eher ein merkmal von leuten, die noch nicht so erfahren sind bzw. noch ihren stil suchen, oda manchmal auch einfach zeitmangel, da wird man schonmal inkonsequent^^

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

17

10.01.2008, 00:31

is eher deshalb so, dass ich meine klassen in reinem c++ geschrieben habe, und sie dann im unter .NET im visual studio anwende, damit ich nicht die gesamte gui selber schreiben muss..

mein stil:

C-/C++-Quelltext

1
2
3
void func()
{
} // func()



.NET

C-/C++-Quelltext

1
2
System::Void func () {
}


ich muss aber hinzufügen, dass das haarspaltereien sind. auch wenns nicht schön aussieht, kann man es doch wohl jedem coder zutrauen dass er sich damit zurecht findet, sollte es tatsächlich jemanden geben der es mal so oder mal so macht..
sich über so eine kleinigkeit zu äußern wirkt ein wenig lächerlich
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

18

10.01.2008, 19:06

Zitat

ich muss aber hinzufügen, dass das haarspaltereien sind. auch wenns nicht schön aussieht, kann man es doch wohl jedem coder zutrauen dass er sich damit zurecht findet, sollte es tatsächlich jemanden geben der es mal so oder mal so macht..
sich über so eine kleinigkeit zu äußern wirkt ein wenig lächerlich


Einen konsequenten Programmierstil als lächerlich einzustufen find ich lächerlich :?
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

19

11.01.2008, 09:07

naja aber ob

() {
}


und

{
}

die lesbarkeit bzw. die verständnis des codes sooo beeinflussen würd ich gern abstreiten
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

20

11.01.2008, 10:17

Hmm man bezeichnet

C-/C++-Quelltext

1
2
void foo() {
}
auch als Java-Style.

C-/C++-Quelltext

1
2
3
void foo()
{
}
ist für gewöhnlich C++-Style ;)

Aber nen Grund dafür gibt es nicht. Und doch, es beeinflusst die Lesbarkeit des Codes. Wenn du jetzt immer nachgucken musst, hat er denn jetzt da am Ende der Zeile auch '{', oder nicht?
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

Werbeanzeige