The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Programming Languages
> C Programming
|
Help this program
Discuss Help this program in the C Programming forum on Dev Shed. Help this program C programming forum discussing all C derivatives, including C#, C++, Object-C, and even plain old vanilla C. These languages are low level languages, and used on projects such as device drivers, compilers, and even whole computer operating systems.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

December 3rd, 2012, 09:41 PM
|
|
Registered User
|
|
Join Date: Dec 2012
Posts: 7
Time spent in forums: 57 m 14 sec
Reputation Power: 0
|
|
|
Help this program
obj:- Funtion returning object and passing object as function
i create but some erorr
#include<iostream.h>
#include<conio.h>
class Distance{
int feets,inches;
public:
Distance()
{
feets=0;
inches=0;
}
Distance(int i)
{
feets=inches=i;
}
Distance(int f,int i)
{
feets=f;
inches=i;
}
Distance addDistance(Distance d1,Distance d2)
{
Distance d3;
d3.feets=d1.feets+d2.feets;
d3.inches=d1.inches+d2.inches;
return d3;
}
void show()
{
cout<<"\nFeets= "<<feets;
cout<<"\nInches= "<<inches;
}
};
void main()
{
Distance d2(10,20),d3;
int f,i;
clrscr();
cout<<"Enter Distance 1 feets: ";
cin>>f;
cout<<"Enter Distance 2 inches: ";
cin>>i;
Distance d1(f,i);
d3=addDistance(d1,d2);
d1.show();
d2.show();
d3.show();
getch();
}
|

December 3rd, 2012, 11:53 PM
|
|
Registered User
|
|
Join Date: Dec 2012
Posts: 5
Time spent in forums: 1 h 25 m 32 sec
Reputation Power: 0
|
|
Quote: | Originally Posted by Mansoor54 obj:- Funtion returning object and passing object as function
i create but some erorr
#include<iostream.h>
#include<conio.h>
class Distance{
int feets,inches;
public:
Distance()
{
feets=0;
inches=0;
}
Distance(int i)
{
feets=inches=i;
}
Distance(int f,int i)
{
feets=f;
inches=i;
}
Distance addDistance(Distance d1,Distance d2)
{
Distance d3;
d3.feets=d1.feets+d2.feets;
d3.inches=d1.inches+d2.inches;
return d3;
}
void show()
{
cout<<"\nFeets= "<<feets;
cout<<"\nInches= "<<inches;
}
};
void main()
{
Distance d2(10,20),d3;
int f,i;
clrscr();
cout<<"Enter Distance 1 feets: ";
cin>>f;
cout<<"Enter Distance 2 inches: ";
cin>>i;
Distance d1(f,i);
d3=addDistance(d1,d2);
d1.show();
d2.show();
d3.show();
getch();
} |
d3=addDistance(d1,d2);
this line contains the error , u see, as addDistance() is a member function of class Distance hence it can be accessed only by variable/object (like d3) of that class using dot(.) operator and not indipendently. so the correct statement is
d3=d3.addDistance(d1,d2);
|

December 4th, 2012, 09:26 PM
|
|
Registered User
|
|
Join Date: Dec 2012
Posts: 7
Time spent in forums: 57 m 14 sec
Reputation Power: 0
|
|
|
OK thanks friends
|

December 5th, 2012, 10:44 AM
|
 |
Contributing User
|
|
Join Date: Aug 2003
Location: UK
|
|
There is some semantically very suspect code in this:
Will instantiate a Distance object representing 2 feet and two inches. Is that really what you intended!?
Code:
Distance x = addDistance(Distance( 1, 6 ), Distance( 1, 7))
Will create a Distance object for 2 feet 13 inches, not 3 feet 1 inch.
Will create a Distance object for 1 feet 14 inches; it would make sense to normalise it to 2 feet 2 inches.
The whole thing can be simplified if you store all distances internally in inches (although this is the 21st Century millimetres might be better). So for example:
Code:
Distance( int i )
{
inches = i ;
}
Distance( int f, int i )
{
inches = f * 12 + i ;
}
void show()
{
cout << "\nFeet = " << inches / 12 ;
cout << "\nInches = " << inches % 12;
}
static Distance addDistance(const Distance& d1, const& Distance d2)
{
return Distance( d1.inches + d2.inches ) ;
}
The member function addDistance() can be declared static to overcome your original problem. It is more normal to have a non-static member that just takes a single operand and adds it to the object for which it was called:
Code:
Distance& addDistance(const Distance& d )
{
inches += d ;
return *this ;
}
And this is an obvious opportunity to operator overloading:
Also "Feet" is the plural of "Foot", "Feets" is just not English.
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|