2017-10-15 124 views
-3

我有一個程序我正在計算使用由用戶指定的測量值的矩形的面積。我使用的是類的具體原因做,但我的編譯器生成兩個錯誤...錯誤:「表達必須具有類類型」和「左必須有類/結構/聯合」

  • expression must have class type
  • left of '.getArea' must have class/struct/union

我該如何解決這個問題?

Rectangle.h

class Rectangle 
{ 
private: 
    int length; 
    int width; 
    int area = length * width; 

public: 
    Rectangle(int l, int w); 
    int getLength(); 
    void setLength(int l); 
    int getWidth(); 
    void setWidth(int w); 
    int getArea(); 
    void setArea(int a); 
}; 

Rectangle.cpp

Rectangle::Rectangle(int l, int w) 
{ 
    length = l; 
    width = w; 
} 
--some code-- 
int Rectangle::getArea() 
{ 
    return area; 
} 
void Rectangle::setArea(int a) 
{ 
    area = a; 
} 

Area.cpp

int i, lth, wth; 

for (i = 0; i < 3; i++) 
{ 
    cout << "Enter your measurements, length first" << endl; 
    cin >> lth >> wth; 
    Rectangle rMeasure(int lth, int wth); 
    cout << "Area of this rectangle is: " << rMeasure.getArea(); //problem code 
} 
+1

'INT面積=長×寬;'這不是它的工作原理。 – user0042

+0

'矩形rMeasure(INT第l,INT第w);'是一個函數聲明。 – Mat

回答

1

Rectangle rMeasure(int lth, int wth); 

是一個函數聲明。

看來你的意思是

Rectangle rMeasure(lth, wth); 
0

在你的代碼一些變化需要

1.

private: 
    int length; 
    int width; 
    int area; 

2.

Rectangle::Rectangle(int l, int w) 
{ 
    length = l; 
    width = w; 
    this->area=length * width; 
} 

3.

for (i = 0; i < 3; i++) 
{ 
    cout << "Enter your measurements, length first" << endl; 
    cin >> lth >> wth; 
    Rectangle rMeasure(lth, wth); 
    cout << "Area of this rectangle is: " << rMeasure.getArea(); 
} 

Demo

相關問題