0

コードをコンパイルしようとすると、毎回次のエラーが発生します。これらはエラーです:

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 

そして、これが私のプログラムの簡略版です。

Triangle.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

#include <cstdlib>
#include <iostream>
#include <math.h>
#include "triangle.h"
using namespace std;

triangle::triangle(double a, double b, double c) {
    x = a;
    y = b;
    z = c;
}

/*
trianglePlus::trianglePlus(double a,double b,double c,char * v):trijsturis(a,b,c) {
    x = a;
    y = b;
    z = c;
    name = new char[20];
    strcpy(name,v);
    }
*/

int main()
{
    system("PAUSE");
    return 0;
}

何が間違っている可能性があるのか​​?

4

1 に答える 1

7

コンストラクターは、完全に定義されているか、宣言されているだけである必要があります。初期化子リストを指定したいので、完全なコンストラクターを定義する必要があります。このように、クラス定義にインラインで:

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);

trianglePlus::trianglePlus(double a, double b, double c, char * v)
: triangle(a,b,c)
, x(a)
, y(b)
, z(c)
{
}
于 2012-11-10T18:11:08.650 に答える