类中构造函数的有关问题,搞了好久搞不明白错在哪里

类中构造函数的问题,搞了好久搞不明白错在哪里,求助
错误提示:不能在返回类型中定义新类型,Invoice定义的末尾可能缺少一个分号,为构造函数指定返回值无效。
写的另外一个代码也所这问题,到底是怎么回事呢?

//3.13cpp

#include <iostream>

#include <string>
using   std::string;

#include   "3.13.h "

Invoice::Invoice(string   code2,   string   name2,   int   quatity2,   int   price2)
{
setcode(code2);
setname(name2);
setquatity(quatity2);
setprice(price2);
}

void   Invoice::setcode(string   code2)
{
code=code2;
}

void   Invoice::setname(string   name2)
{
name=name2;
}

void   Invoice::setquatity(int   quatity2)
{
quatity=quatity2;
}

void   Invoice::setprice(int   price2)
{
price=price2;
}

string   Invoice::getcode()
{
return   code;
}

string   Invoice::getname()
{
return   name;
}

int   Invoice::getquatity()
{
return   quatity;
}

int   Invoice::getprice()
{
return   price;
}

int   Invoice::getInvoiceAmount(int   quatity,   int   price)
{
int   amount;
amount=quatity*price;
return   amount;
}

------解决方案--------------------
错误提示:不能在返回类型中定义新类型,Invoice定义的末尾可能缺少一个分号,为构造函数指定返回值无效。
=====>
class Invoice
{
................
}; // <===这个分号必须要
------解决方案--------------------
class Invoice
{
................
}; //分号

class 定义,
struct 、union 定义等等都是这样,
需要一个分号。

其他的类型定义也是需要分号结尾 ...