954,504 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

creating a class and declaring objects

I've created a class Fraction and am trying to use it in a main () but keep getting an error in my compiler that says "main must return int". My teacher says it's fine but i need to compile and run so i know that it works. Any suggestions? Thank you, jennie
#include


class Fraction
{
public:
int num, den;
};

void main()
{
Fraction oneFraction;
float decimal = oneFraction.num/oneFraction.den;

cout <<"Please enter a numerator "<>oneFraction.num;
cout <<"The numerator is "<>oneFraction.den;

while (oneFraction.den == 0)
{
cout<<"Enter a number greater than zero."<>oneFraction.den;
}
cout <<"The denominator is "<1)
cout<<"The decimal value is greater than one."<

Guppy25
Newbie Poster
4 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

try putting int main() ?

Acidburn
Posting Pro
511 posts since Dec 2004
Reputation Points: 12
Solved Threads: 5
 

>compiler says "main must return int"
>teacher says it's fine
Your compiler is right and your teacher is wrong. main has never returned anything but int in C or C++. If a compiler allows it then it's a non-standard extension to the language and you can't expect your code to do anything meaningful on another compiler. The following definition for main will work everywhere without fail in any version of either C or C++:

int main()
{
  return 0;
}

However, the recommended C style (that also works perfectly for C++) is

int main(void)
{
  return 0;
}

to promote continuity with the way declarations are handled, and the recommended C++ style is

int main()
{
}

because C++ will return 0 (for success) automagically, thus removing the only argument that idiotic void mainers constantly spout about returning 0 taking too much effort. The same feature is in the latest version of C, but because it isn't widely implemented yet, you should continue to work with the common subset of "old" C and "new" C.

If your teacher disagrees then direct him here and I'll be happy to explain in detail why he's stupid.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

lol can you not explain anyway? NAr I'm joking! But i cant belive i missed out return 0; didnt see that error....

Acidburn
Posting Pro
511 posts since Dec 2004
Reputation Points: 12
Solved Threads: 5
 

When you get your program running your in for another surprise. Your program will say, for instance, that 3/5 = 0. The problem is that onefraction.num and onefraction.den are integrs and when you divide integers you just get their integer quotient. Something like this will work: decimal = (1.0*onefraction.num)/onefraction.den;, or you could use a cast.

murschech
Junior Poster in Training
60 posts since Dec 2004
Reputation Points: 21
Solved Threads: 1
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You