未定义的引用`rectangle :: rectangle()

时间:2017-06-07 19:44:26

标签: c++

我正在尝试声明一个矩形类型的对象,但它一直向我显示此错误

这是从形状类继承的矩形类:

class rectangle: public shape{

int width, height;
public:
    rectangle();

 void draw(int width, int height){
    for(int i = 1; i <= height; i++){
            for(int j = 1; j <= width; j++){
                if( i == 1 && i == height)
                    cout<<"*";
                else if( j == 1 && j == width)
                    cout<<"*";
                else
                    cout<<" ";
            }
            cout<<endl;
        }
    }


};

这是形状类:

class shape
{
int x, y;
char letter;
public:
    shape(int x, int y, char letter, int length){
        int X = x;
        int Y = y;
        int L = letter;
    }
    void verLine(){
        for(int i = 0; i < 5; i++){
            cout<<"*"<<endl;
        }
    }
    void horLine(){
        for(int i = 0; i < 5; i++){
            cout<<"*";
        }
    }
    char setLetter(char letter){
        int newLetter = letter;
        return newLetter;
    }
    void gotoxy(int x, int y){
        HANDLE hConsole;
        COORD cursorLoe;
        std::cout.flush();
        cursorLoe.X = x;
        cursorLoe.Y = y;
        hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(hConsole, cursorLoe);
    }
};

这是主要的:

 int main()
 {
     rectangle r1;
     cout<<endl;
     r1.draw(5,5);
     return 0;
 }

我认为问题在于我在矩形类中的默认构造函数,但我找不到任何其他方法来编码它

1 个答案:

答案 0 :(得分:0)

您声明了默认构造函数但没有定义它。您需要在某处定义函数rectangle::rectangle()。如果您不需要构造函数实际执行任何操作,那么您根本不需要声明它。所以要么定义构造函数,要么不要声明它。