一个C++超简单的语法错误 求解

我在学习范磊C++教程在抄写一个程序的时候提示第21行length前面少了个分号 我看了那个视频两三遍都没什么错啊 为什么我的就不能编译成功呢 下面是那个程序的代码。谢谢大神们的帮助!

#include
using namespace std;
class demo
{
public:
demo(){x=0;cout<<"demo的默认构造函数"<<x<<endl;}
demo(int i){x=i;cout<<"demo的带一个参数的构造函数"<<x<<endl;}
~demo(){cout<<"demo的默认析构函数"<<x<<endl;}
int get(){return x;}
void set(int i){x=i;}
private:
int x;
};

class rectangle
{
public:
rectangle(){x=1000;cout<<"rectangle的默认构造函数"<<x<<endl;}
rectangle(int i,int j,int k):x(i),width(j),length(k)
{
cout<<"rectangle的带三个参数的构造函数"<<"长方形b的面积为:"length.get()*width.get()<<endl;
}
~rectangle(){cout<<"rectangle的默认析构函数"<<x<<endl;}
int area(){return length.get()*width.get();}
private:
int x;
demo length;
demo width;
};

int main()
{
rectangle a(100,200,300);
return 0;
}

class结束后面的大括号后一定要有分号的。。你看除了第21行其他的class结束也有分号不是?

把这个删了:
:x(i),width(j),length(k)

不明白您在说什么 我的程序只有两个类 一个叫demo 一个叫rectangle 第一个结束的分号在13行 第二个结束的分号在29行

#include 后面没有内容,遗漏添加
后面没有看