C++ typedef class use

c++, class, typedef

Solution

This is a hangover from the 'C' language.

In C, if you have

struct Pt { int x; int y; };

then to declare a variable of this struct, you need to do

struct Pt p;

The typedef helped you avoid this in C

typedef struct { int x; int y; } Pt;

Now you can do

Pt p;

in C.

In C++, this was never necessary because

class Pt { int x; int y; };

allowed you to do

Pt p;

It provides no notational benefits in C++ as it does in C. OTOH, it leads to restrictions because this syntax does not provide any mechanism for construction, or destruction.

i.e. you cannot use the name typedef name in the constructor or destructor.

typedef class { int x; int y; } Pt;

You cannot have a constructor called Pt, nor a destructor. So in essence, most of the time, you shouldn't do this in C++.

Problem

Why use a `typedef class {} Name` ? I learnt this in IBM C++ doc, no hint to use here.

Original source