C++ 在尝试do declare构造函数时,应在输入末尾使用`{'

C++ 在尝试do declare构造函数时,应在输入末尾使用`{',c++,constructor,C++,Constructor,当我试图编译我的代码时,每次都会出现以下错误。 以下是错误: C:\...\main.cpp In file included from main.cpp C:\...\triangle.h In constructor `trianglePlus::trianglePlus(double, double, double, char*)': C:\...\triangle.h expected `{' at end of input C:\...\Makefile.win [Build Erro

当我试图编译我的代码时,每次都会出现以下错误。 以下是错误:

C:\...\main.cpp In file included from main.cpp
C:\...\triangle.h In constructor `trianglePlus::trianglePlus(double, double, double, char*)':
C:\...\triangle.h expected `{' at end of input
C:\...\Makefile.win [Build Error]  [main.o] Error 1 
这是我的程序的精简版本

三角形h:

class triangle { 
  double x;
  double y;
  double z;

  public:
         triangle(double a,double b,double c);
  };
class trianglePlus: public triangle {
  char * name;
  public:
         trianglePlus(double a,double b,double c,char * v):triangle(a,b,c);
  };
删除注释部分时,它会给我带来更多错误。 main.cpp

#包括
#包括
#包括
#包括“triangle.h”
使用名称空间std;
三角形::三角形(双a、双b、双c){
x=a;
y=b;
z=c;
}
/*
trianglePlus::trianglePlus(双a,双b,双c,字符*v):trijsturis(a,b,c){
x=a;
y=b;
z=c;
名称=新字符[20];
strcpy(名称,v);
}
*/
int main()
{
系统(“暂停”);
返回0;
}

有什么问题吗?

您的构造函数需要完全定义或仅声明。由于您要指定初始值设定项列表,您需要定义完整的构造函数。最好像这样,在类定义中内联:

trianglePlus(double a, double b, double c, char * v)
: triangle(a,b,c)
, x(a)
, y(b)
, z(c)
{
}
或者,只需将声明放在头文件中,将定义放在源文件中:

trianglePlus(double a, double b, double c, char * v);


您无法在声明中初始化基类。您确定非常量
char*
?看起来非常模糊。
trianglePlus(double a, double b, double c, char * v);
trianglePlus::trianglePlus(double a, double b, double c, char * v)
: triangle(a,b,c)
, x(a)
, y(b)
, z(c)
{
}