Welcher Compiler lag richtig?
-
Mal bitte folgenden Code beachten:
[code]
typedef sigc::slot<void, const u8,const bool> MyKeySlot;
typedef sigc::slot<void, const f32, const f32> MyMouseSlot;typedef sigc::signal<void, const u8,const bool> MyKeyEvent;
typedef sigc::signal<void, const f32, const f32> MyMouseEvent;MyKeyEvent m_KeyEvent;
MyMouseEvent m_MouseEvent;sigc::connection connect(NLKeySlot& slot)
{
return m_KeyEvent.connect(slot);
}sigc::connection connect(NLMouseSlot& slot)
{
return m_MouseEvent.connect(slot);
}
[/cpp]Der Visual C++ Compiler 2008 hat das anstandslos kompiliert.
Der MinGW 4.4.1 nicht. Der konnte zwischen Key-Event und Mouse-Event nicht unterscheiden.
Ändere ich die Signatur der Funktionen von Referenzen in Kopien kanns der MinGW kompilieren.
Jetzt ist die Frage: Hab ich scheisse programmiert und warum oder hat entweder VS nachgeholfen oder MinGW versagt?
(und jetzt gehe ich ins bett)
lg
-
typedef sigc::slot<void, const u8,const bool> MyKeySlot; typedef sigc::slot<void, const f32, const f32> MyMouseSlot; typedef sigc::signal<void, const u8,const bool> MyKeyEvent; typedef sigc::signal<void, const f32, const f32> MyMouseEvent; MyKeyEvent m_KeyEvent; MyMouseEvent m_MouseEvent; sigc::connection connect(NLKeySlot& slot) { return m_KeyEvent.connect(slot); } sigc::connection connect(NLMouseSlot& slot) { return m_MouseEvent.connect(slot); }
Doofe tags -.-
-
Wie ist NLKeySlot und NLMouseSlot definiert? Ich tippe mal darauf, das deine u8 Typdefs bei den beiden Compiler auf unterschiedliche Buildins verweisen. Bei dem einen gibt es deswegen eine Kollision und beim anderen nicht.
Mehr kann ich ohne genaue Fehlermeldung nicht sagen.
-
typedef sigc::slot<void, const u8,const bool> MyKeySlot; typedef sigc::slot<void, const f32, const f32> MyMouseSlot; typedef sigc::signal<void, const u8,const bool> MyKeyEvent; typedef sigc::signal<void, const f32, const f32> MyMouseEvent; MyKeyEvent m_KeyEvent; MyMouseEvent m_MouseEvent; sigc::connection connect(MyKeySlot& slot) { return m_KeyEvent.connect(slot); } sigc::connection connect(MyMouseSlot& slot) { return m_MouseEvent.connect(slot); }
Ehm, ja war nur nen Tippfehler
lg
-
Oh überlesen:
Nein, u8 ist bei beiden Compilern als "unsigned char" definiert im eigenen Namespace in dem auch der Code liegt. f32 ist als float definiert.
lg