Du bist nicht angemeldet.

Werbeanzeige

351

14.12.2013, 17:00

C-/C++-Quelltext

1
texts[text->textId]=text->text;

nothing to say...

352

18.12.2013, 17:11

Heute endlich eine Lösung gefunden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
EditorFrame::~EditorFrame()
{
    m_pAuiManager->UnInit();

    /// This little beast here caused me so many time in order
    /// to find out why VC keeps telling me I'd cause memory
    /// leaks.....
    /// WHY? I mean everything else is deleted by wxWidgtets
    /// and if I try to delete any other control, I'm getting 
    /// dozens of errors.
    /// So who would think he'd have to delete this one then?
    /// ARGGG!!!
    ///
    /// time_wasted(already): 5h 47min
    delete m_pAuiManager;
}


wxWidgets' Pointer können einem ziemlich auf den Geist gehen.... Dass die sich aber auch nie entscheiden können, wann man denn löschen soll, und wann nicht.....

Frustrierte Grüße,
~ EuadeLuxe ~

PS.: Es handelt sich um den wxAuiManager aus wxAUI.

Tim Bureck

Frischling

Beiträge: 26

Wohnort: Krefeld

Beruf: Softwareentwickler

  • Private Nachricht senden

353

12.01.2014, 20:44

C-/C++-Quelltext

1
2
3
4
5
int WeaponBody(int nAim, int nDistance) {
    /* 30 Zeilen Berechnungen, dann aber... */
    LOG_ERROR("%s", "YES HELLO! -|LOL|-");
    return RAND(0,3);
}

354

12.01.2014, 20:53

hä? xD
Sinn? :D

MasterQ32

Frischling

Beiträge: 15

Wohnort: Stuttgart

Beruf: Student, Selbstständiger Softwareentwickler

  • Private Nachricht senden

355

13.01.2014, 02:05

Gerade selbst implementiert, hätte nie gedacht, dass das überhaupt funktionieren kann.

C#-Quelltext

1
2
3
4
5
6
7
8
9
public abstract class Digraph<TNode>
    where TNode : Digraph<TNode>
{
    // ...
    public TNode Parent 
    {
        // ...
    }
}

Sacaldur

Community-Fossil

Beiträge: 2 326

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

356

13.01.2014, 10:06

Ob das nun ein "WTF" Wert ist, kommt wohl noch auf den Anwendungsfall an, für den das geschrieben wurde.
In Java werden Enumerations (mit den enum-Schlüsselwort) ja in reguläre Klassen umgesetzt, die von der abstrakten Klasse Enum abgeleitet sind. Enum beginnt dabei so (der Teil vor implements entspricht dabei deinem Code, nur mit anderen Bezeichnern):

Quellcode

1
2
public abstract class Enum<E extends Enum<E>>
        implements Comparable<E>, Serializable {

Die umgesetzte Klasse (wenn man selbst public enum TimeUnit schreibt) könnte dann ungefähr so aussehen:

Quellcode

1
public class TimeUnit extends Enum<TimeUnit> {

Wenn man sich gedanklich das Typargument der Generik oben bei Enum einfügt, sieht man schon eher, warum ein solches Konstrukt (in diesem Fall) verwendet wurde und sinnvoll ist:

Quellcode

1
2
public abstract class Enum<TimeUnit extends Enum<TimeUnit>>
        implements Comparable<TimeUnit>, Serializable {

Auf diese Weise wird sichergestellt, dass jeder Enumerationswert einer jeden Enumeration nur mit anderen Werten des gleichen Typs (der gleichen Enumeration) vergleichbar ist. (Sollte man unter der Annahme leben, dass die Generik in Java auch von allen richtig verwendet wird, aber das ist etwas anderes... ^^)

Da du scheinbar nur eine Baum-artige Struktur forcieren wolltest, finde ich das eher weniger "WTF"-mäßig, (aber das empfinde ich wahrscheinlich auch nur so, weil ich bereits die Java-Enumerations kannte...)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Beiträge: 1 235

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

357

13.01.2014, 14:25

Das ist doch im Prinzip ganz normales CRTP.
Eigentlich in den meisten Fällen wenn es eingesetzt wird, überhaupt nicht WTF würde ich sagen.

birdfreeyahoo

Alter Hase

Beiträge: 766

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

358

13.01.2014, 15:38

Was ich lustig find, ist bei Unity die Komponenten-Rekursion:

Quellcode

1
2
3
transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.
transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.
transform.transform.transform.transform.transform.transform.position = new Vector3(0.0f,0.0f,0.0f);

Sacaldur

Community-Fossil

Beiträge: 2 326

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

359

13.01.2014, 15:47

Was ich lustig find, ist bei Unity die Komponenten-Rekursion:

Quellcode

1
2
3
transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.
transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.transform.
transform.transform.transform.transform.transform.transform.position = new Vector3(0.0f,0.0f,0.0f);


Das einzige WTF an diesem Code ist doch new Vector3(0.0f,0.0f,0.0f)! Wofür gibt es denn Vector3.zero? ;)
Aber mal Spaß bei Seite...

So ein WTF ist das nun auch wieder nicht wert, da sowohl GameObject, als auch Component Properties für relevante Komponenten definieren. Da Transform davon abgeleitet ist und transform eine der Properties ist, bekommt man darüber das wieder das gleiche Objekt.
Mal ganz abgesehen davon, dass man damit nur Rechenzeit verschwendet...
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

MasterQ32

Frischling

Beiträge: 15

Wohnort: Stuttgart

Beruf: Student, Selbstständiger Softwareentwickler

  • Private Nachricht senden

360

13.01.2014, 16:53

Das ist doch im Prinzip ganz normales CRTP.
Eigentlich in den meisten Fällen wenn es eingesetzt wird, überhaupt nicht WTF würde ich sagen.

Okay, ich hab das Pattern noch nie gesehen. Ist aber echt nützlich.

Zum Thema Unity3D:
Die API sollte meiner Meinung nach etwas besser gekapselt werden. Warum haben sie ein paar ihrer Komponenten in Eigenschaften gelegt, die Null-Objekte zurückliefern und eine Fehlermeldung in die Konsole printen?
Ich würde eine waschechten Exception vorziehen, da sie den Programmierer dazu zwingt, ordentlicher zu arbeiten.
Außerdem sollten die Spiele bei einer Exception ein veränderbares Verhalten haben. Die Exception einfach wegzucatchen ist ja nicht wirklich eine schöne Lösung, Fehler zu finden.

Werbeanzeige