Click here to Skip to main content
15,888,454 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
#include<iostream>

using namespace std;

class Shape{

protected:

float w,h;

void get()

{

cin>>w>>h;

}

 

Shape(float a)

{

w=a;

}

};

class Rectangle: public Shape{

protected:

void area{

cout<<w*h<<endl;

}

};

int main()

{

rectangle R;

R.get();

R.area();

return 0;

}


What I have tried:

I found 3 error , I need to explain why show this error .
Posted
Updated 1-Aug-22 5:30am
Comments
Sandeep Mewara 1-Aug-22 1:09am    
And the query is? Seems you missed sharing what you tried and are stuck with.
N Hasan 1-Aug-22 1:11am    
When i run this code ,i found 3 error , but i need to know details about 3 error...
Dave Kreskowiak 1-Aug-22 1:30am    
So are you going to tell everyone what the errors are or just let everyone guess?

Start by picking a braces style and sticking to it, and indenting your code so it's at least a bit readable:

C++
#include<iostream>

using namespace std;

class Shape
    {
    protected:
    float w,h;
    void get()
        {
        cin>>w>>h;
        }
    
    Shape(float a)
        {
        w=a;
        }
    };

class Rectangle: public Shape
    {
    protected:
    void area
        {
        cout<<w*h<<endl;
        }
    };
    
int main()
    {
    rectangle R;
    R.get();
    R.area();
    return 0;
    }
Then look at your error messages:
main.cpp:46:1: error: variable or field ‘area’ declared void

area is either a field also known as a variable) or a method. If it's a field, it can't be void and if it's a method it needs a parameter list (even an empty one) denoted by '(' and ')' characters.
Since you try to call it, I'll assume it's a method. In which case, this is wrong:
void area
    {
    cout<<w*h<<endl;
    }
It should be this:
void area()
    {
    cout<<w*h<<endl;
    }


You should expect to get syntax errors every day, probably many times a day while you are coding - we all do regardless of how much experience we have! Sometimes, we misspell a variable, or a keyword; sometimes we forget to close a string or a code block. Sometimes the cat walks over your keyboard and types something really weird. Sometimes we just forget how many parameters a method call needs.

We all make mistakes.

And because we all do it, we all have to fix syntax errors - and it's a lot quicker to learn how and fix them yourself than to wait for someone else to fix them for you! So invest a little time in learning how to read error messages, and how to interpret your code as written in the light of what the compiler is telling you is wrong - it really is trying to be helpful!

So read this: How to Write Code to Solve a Problem, A Beginner's Guide Part 2: Syntax Errors[^] - it should help you next time you get a compilation error!
 
Share this answer
 
Quote:
I found 3 error , I need to explain why show this error .

The errors are not specified, but it would be interesting to know which three you have already noticed yourself. I'm getting at least double that and adding the annotations it's even more.
C++
class Shape
{
public:                     //!1! Constructor must be public!
	Shape(float a)
	{
		w = a;
	}
	void get()              //!2! Member hast to be public
	{
		cin >> w >> h;
	}
protected:
	float w, h;
};

class Rectangle : public Shape
{
public: 
	Rectangle(float a):Shape(a) {};  //!3! Missing Constructor
// protected:                   //!4! Member hast to be public  
	void area()                 //!5! missing brackets
	{
		cout << w*h << endl;
	}
};

int main()
{
	Rectangle R(1.0);     //!6! spelling wrong + constructor mismatch
	R.get();
	R.area();
	return 0;
}


Remarks:
When accessing Rectangle::area(), w and h are accessed.Here it should be ensured that the member variables w and h are initialized.This is usually done in the constructor. When entering, there is no indication to the user of what to enter.Also, the values ​​are never checked.For example, they could be negative! In the Shape::get() method, w and h are overridden, why is w already set in the constructor when w is overridden anyway?
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900