2012-11-10 37 views
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; 
} 

任何想法可能是錯的什麼?

+2

你可以在聲明中初始化基類。 – chris

+0

什麼是trijsturis? –

+0

你確定那個非const char *'嗎?這看起來非常模糊。 –

回答

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) 
{ 
}