C++再考 という本のサンプルコードの一部です、コンパイルすると、下記のエラーが出ます
何処がおかしいのでしょうか?

VS2005 pro SP1
winXP SP3

#include <iostream>

using namespace std;

class Expr_node {
  friend ostream& operator<<(ostream&, const Expr&);
  friend class Expr;

  int use;
protected:
  Expr_node():use(1){}
  virtual void print(ostream&) const = 0;
  virtual ~Expr_node(){}
};

error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

error C2143: 構文エラー : ',' が '&' の前にありません。