указатель на структуру

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by darckmilord, 6 Jan 2011.

  1. darckmilord

    darckmilord Elder - Старейшина

    Joined:
    8 Feb 2007
    Messages:
    50
    Likes Received:
    14
    Reputations:
    0
    Есть тип в Делфи:

    PHP:
    type
             PTData 
    = ^TData// наш указатель на тип TTData
      
             
    TData record
                  Active     
    Boolean;
                  
    Interval   LongWord;
                  
    Send    procedure;
                  
    PrevNext PTData;  // указатели на структуру в нутри нее
    end;
    Как аналогично для С++ ?????

    1. Если так, то ругается:

    HTML:
    struct TData
    {
    	bool        Active;
    	DWORD       Interval;
    	void*	Send;
    	PTData    Prev; // указатель на структуру в нутри нее
    	PTData    Next; // указатель на структуру в нутри нее
    };
    typedef TData *PTData;
    // ****.h|80|error: `PTData' does not name a type|
    2. И так ексепшен при вызове функции
    HTML:
    struct TData
    {
    	bool        Active;
    	DWORD       Interval;
    	void*	Send;
    	void*    Prev; // указатель на структуру в нутри нее
    	void*   Next; // указатель на структуру в нутри нее
    };
    typedef TData *PTData;|
    Подскажите пожалуйста как правильно.
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    можно примерно так, в истинно сишном формате )
    typedef struct _TData
    {
    bool Active;
    DWORD Interval;
    void* Send;
    void* Prev;
    void* Next;
    } TData, *PTData;
     
  3. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    или когда хочется записать без тега
    делают так
    Code:
    typedef struct _TData TData;
    
    struct _TData
    {
    	bool        Active;
    	DWORD       Interval;
    	void*	Send;
    	TData    *Prev; 
    	TData    *Next; 
    };
    
    а иначе пришлось бы написать
    
    typedef struct _TData
    {
    	bool        Active;
    	DWORD       Interval;
    	void*	Send;
    	struct _TData    *Prev; 
    	struct _TData    *Next; 
    }TData;