错误原因:在.h文件中,在函数定义后面加上{},而.cpp文件已有此函数的具体实现。
正确写法:如果函数的具体实现已经写在.cpp文件中,则.h文件中应写为:
返回值 函数名(); //√
返回值 函数名(){}; //如果.cpp文件中有此函数的具体实现,则会报错。
分析:正是因为.cpp文件已存在对该函数的具体实现,会与.h文件中空函数体{}冲突,所以会报错“函数...已有主体”。
补充:在.h中,函数可以有函数体。
int Height() { return Height(root); }; //√。这时,.cpp文件无需再对该函数进行定义。