Examples of typedef definitions
The following statements define
LENGTH as a synonym
for int and then use this typedef to
declare length, width, and height as
integer variables: typedef int LENGTH;
LENGTH length, width, height;The following declarations are equivalent to the above declaration:
int length, width, height;Similarly,
typedef can be used to define a structure,
union, or C++ class. For example: typedef struct {
int scruples;
int drams;
int grains;
} WEIGHT;The structure
WEIGHT can then be used in the following
declarations: WEIGHT chicken, cow, horse, whale;In the following example, the type of
yds is "pointer
to function with no parameter specified, returning int".
typedef int SCROLL();
extern SCROLL *yds; In the following typedefs, the token
struct is
part of the type name: the type of ex1 is struct
a; the type of ex2 is struct b.
typedef struct a { char x; } ex1, *ptr1;
typedef struct b { char x; } ex2, *ptr2; Type ex1 is
compatible with the type struct a and the type of
the object pointed to by ptr1. Type ex1 is
not compatible with char, ex2, or struct
b.
Beginning of C++ only.
In C++, a
typedef name must be different
from any class type name declared within the same scope. If the typedef name
is the same as a class type name, it can only be so if that typedef is
a synonym of the class name. This condition is not the same as in
C. The following can be found in standard C headers: typedef class C { /* data and behavior */ } C;A
C++ class defined in a
typedef without being named
is given a dummy name and the typedef name for linkage.
Such a class cannot have constructors or destructors. For example:
typedef class {
Trees();
} Trees;Here the function Trees() is
an ordinary member function of a class whose type name is unspecified.
In the above example, Trees is an alias for the unnamed
class, not the class type name itself, so Trees() cannot
be a constructor for that class.
End of C++ only.
Beginning of C++0x only.
Declaring typedef names as friends
In the C++0x standard, the extended friend declarations feature is introduced, with which you can declare typedef names as friends. For more information, see Extended friend declarations.
End of C++0x only.