Typedef



  • Hallo wofür genau braucht man typedefs und wann werden diese eingesetzt ?

    Hier wird jetzt z.b. erklärt das dass für die Portabliät ist:

    http://tutorial.schornboeck.net/typedef.htm

    Aber werden typedefs auch noch für andere Sachen eingesetzt ?

    In der Datei button.hpp von meinem Borland C++ Builder 6

    habe ich z.b. auch einen typedef gefunden aber was genau machen den jetzt typedefs ?

    class PASCALIMPLEMENTATION TSpeedButton : public Controls::TGraphicControl 
    {
    	typedef Controls::TGraphicControl inherited;
    
    private:
    	int FGroupIndex;
    	void *FGlyph;
    	bool FDown;
    	bool FDragging;
    	bool FAllowAllUp;
    	TButtonLayout FLayout;
    	int FSpacing;
    	bool FTransparent;
    	int FMargin;
    	bool FFlat;
    	bool FMouseInControl;
    	void __fastcall GlyphChanged(System::TObject* Sender);
    	void __fastcall UpdateExclusive(void);
    	Graphics::TBitmap* __fastcall GetGlyph(void);
    	void __fastcall SetGlyph(Graphics::TBitmap* Value);
    	TNumGlyphs __fastcall GetNumGlyphs(void);
    	void __fastcall SetNumGlyphs(TNumGlyphs Value);
    	void __fastcall SetDown(bool Value);
    	void __fastcall SetFlat(bool Value);
    	void __fastcall SetAllowAllUp(bool Value);
    	void __fastcall SetGroupIndex(int Value);
    	void __fastcall SetLayout(TButtonLayout Value);
    	void __fastcall SetSpacing(int Value);
    	void __fastcall SetTransparent(bool Value);
    	void __fastcall SetMargin(int Value);
    	void __fastcall UpdateTracking(void);
    	HIDESBASE MESSAGE void __fastcall WMLButtonDblClk(Messages::TWMMouse &Message);
    	HIDESBASE MESSAGE void __fastcall CMEnabledChanged(Messages::TMessage &Message);
    	MESSAGE void __fastcall CMButtonPressed(Messages::TMessage &Message);
    	MESSAGE void __fastcall CMDialogChar(Messages::TWMKey &Message);
    	HIDESBASE MESSAGE void __fastcall CMFontChanged(Messages::TMessage &Message);
    	MESSAGE void __fastcall CMTextChanged(Messages::TMessage &Message);
    	MESSAGE void __fastcall CMSysColorChange(Messages::TMessage &Message);
    	HIDESBASE MESSAGE void __fastcall CMMouseEnter(Messages::TMessage &Message);
    	HIDESBASE MESSAGE void __fastcall CMMouseLeave(Messages::TMessage &Message);
    
    protected:
    	TButtonState FState;
    	DYNAMIC void __fastcall ActionChange(System::TObject* Sender, bool CheckDefaults);
    	DYNAMIC TMetaClass* __fastcall GetActionLinkClass(void);
    	DYNAMIC HPALETTE __fastcall GetPalette(void);
    	virtual void __fastcall Loaded(void);
    	DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    	DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
    	DYNAMIC void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    	virtual void __fastcall Paint(void);
    	__property bool MouseInControl = {read=FMouseInControl, nodefault};
    
    public:
    	__fastcall virtual TSpeedButton(Classes::TComponent* AOwner);
    	__fastcall virtual ~TSpeedButton(void);
    	DYNAMIC void __fastcall Click(void);
    
    __published:
    	__property Action ;
    	__property bool AllowAllUp = {read=FAllowAllUp, write=SetAllowAllUp, default=0};
    	__property Anchors  = {default=3};
    	__property BiDiMode ;
    	__property Constraints ;
    	__property int GroupIndex = {read=FGroupIndex, write=SetGroupIndex, default=0};
    	__property bool Down = {read=FDown, write=SetDown, default=0};
    	__property Caption ;
    	__property Enabled  = {default=1};
    	__property bool Flat = {read=FFlat, write=SetFlat, default=0};
    	__property Font ;
    	__property Graphics::TBitmap* Glyph = {read=GetGlyph, write=SetGlyph};
    	__property TButtonLayout Layout = {read=FLayout, write=SetLayout, default=0};
    	__property int Margin = {read=FMargin, write=SetMargin, default=-1};
    	__property TNumGlyphs NumGlyphs = {read=GetNumGlyphs, write=SetNumGlyphs, default=1};
    	__property ParentFont  = {default=1};
    	__property ParentShowHint  = {default=1};
    	__property ParentBiDiMode  = {default=1};
    	__property PopupMenu ;
    	__property ShowHint ;
    	__property int Spacing = {read=FSpacing, write=SetSpacing, default=4};
    	__property bool Transparent = {read=FTransparent, write=SetTransparent, default=1};
    	__property Visible  = {default=1};
    	__property OnClick ;
    	__property OnDblClick ;
    	__property OnMouseDown ;
    	__property OnMouseMove ;
    	__property OnMouseUp ;
    };
    


  • Zum Beispiel, um komplizierte Namen (evtl. mit grossen Templateschachtelungen) nicht immer schreiben zu müssen, um für einen konkreten Typen einen passenden Namen zu wählen, oder um bei einer Typänderung nur eine Stelle im Code anpassen zu müssen.





  • @ Tachyon ich habe gegoogelt 😡



  • Kann man mit typedefs z.b. solche Funktionen verkürzen ?

    int funktion ( int zahl1 , int zahl2 , int zahl3 , int zahl3 , int zahl5 );



  • blup schrieb:

    Kann man mit typedefs z.b. solche Funktionen verkürzen ?

    int funktion ( int zahl1 , int zahl2 , int zahl3 , int zahl3 , int zahl5 );

    Nein, allerhöchstens den Funktionszeiger. typedef ist für die Verkürzte Schreibweise eines Typs:

    typedef std::vector<std::vector<int> > Foo;
    Foo a; // => std::vector<std::vector<int> > a;
    


  • blup schrieb:

    Kann man mit typedefs z.b. solche Funktionen verkürzen ?

    Nein, das macht man normalerweise eher mit Klassen, die logisch zusammengehörige Variablen zusammenfassen. Oder man teilt die Funktion in mehrere Teilfunktionen auf.



  • typedef int _;
    

    ->

    _ funktion ( _ zahl1 , _ zahl2 , _ zahl3 , _ zahl3 , _ zahl5 );
    

    aber, obs sinnvoll ist???


Anmelden zum Antworten