Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > one overload question

Reply
Thread Tools

one overload question

 
 
Hunter Hou
Guest
Posts: n/a
 
      06-14-2004
Hi,

I have this program, compiling is passed, but when i wanted to get the
executable file(g++ -o output input.o), it fails.

Who can lead me where the error is?

Thanks,
Hunter
===


#include <iostream>


class Rational {

public:

Rational( int par1 = 0, int par2 = 1 ): n( par1 ), d( par2 ) {}

void printRational( );


int getN() const { return n; }

int getD() const { return d; }

void setN( int par ) { n = par; }

void setD( int par ) { d = par; }

public:

friend const Rational& operator * ( const Rational& par1,
const Rational& par2 );

private:

int n, d;
};

const Rational& operator * ( const Rational& rat1, const Rational& rat2 )
{

// I know this solution is bad and there's a correct one, I just want to
try what Scott Mayers says.
static Rational result;

result.setN( rat1.getN() * rat2.getN() ) ;
result.setD( rat1.getD() * rat2.getD() ) ;

return result;
}

void Rational:rintRational() {

std::cout << "the N is: " << n << "the D is: " << d << std::endl;

}


int main()
{

Rational rat1( 2, 3 ), rat2( 4, 5 );

Rational result = rat1 * rat2;

result.printRational();

return 0;

}


LocalRef.o(.text+0xba):LocalRef.cpp: undefined reference to
`std::basic_ostream<char, std::char_traits<char> >& std::endl<char,
std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
>&)'

LocalRef.o(.text+0xe0):LocalRef.cpp: undefined reference to `std::cout'
LocalRef.o(.text+0xe5):LocalRef.cpp: undefined reference to
`std::basic_ostream<char, std::char_traits<char> >& std:perator<<
<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
>&, char const*)'

LocalRef.o(.text+0xee):LocalRef.cpp: undefined reference to
`std:stream:perator<<(int)'
LocalRef.o(.text+0xf7):LocalRef.cpp: undefined reference to
`std::basic_ostream<char, std::char_traits<char> >& std:perator<<
<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
>&, char const*)'

LocalRef.o(.text+0x100):LocalRef.cpp: undefined reference to
`std:stream:perator<<(int)'
LocalRef.o(.text+0x109):LocalRef.cpp: undefined reference to
`std:stream:perator<<(std:stream& (*)(std:stream&))'
LocalRef.o(.text+0x1a:LocalRef.cpp: undefined reference to
`std::ios_base::Init::Init()'
LocalRef.o(.text+0x1c7):LocalRef.cpp: undefined reference to
`std::ios_base::Init::~Init()'




 
Reply With Quote
 
 
 
 
Rolf Magnus
Guest
Posts: n/a
 
      06-14-2004
Hunter Hou wrote:

> Hi,
>
> I have this program, compiling is passed, but when i wanted to get the
> executable file(g++ -o output input.o), it fails.
>
> Who can lead me where the error is?



Why do you think this is an "overload question"? Anyway, it looks to me
as if your linker doesn't find the symbols of the standard library. Are
you sure you used g++ for linking, not gcc, and that you linked your
code using the same g++ version you compiled it with?

 
Reply With Quote
 
 
 
 
Hunter Hou
Guest
Posts: n/a
 
      06-14-2004
Rolf Magnus wrote:
> Hunter Hou wrote:
>
>
>>Hi,
>>
>>I have this program, compiling is passed, but when i wanted to get the
>>executable file(g++ -o output input.o), it fails.
>>
>>Who can lead me where the error is?

>
>
>
> Why do you think this is an "overload question"? Anyway, it looks to me
> as if your linker doesn't find the symbols of the standard library. Are
> you sure you used g++ for linking, not gcc, and that you linked your
> code using the same g++ version you compiled it with?
>


In fact, I don't know if this is really caused by overload.
I've been using g++ of mingw and never run into such a confusing problem.
 
Reply With Quote
 
lallous
Guest
Posts: n/a
 
      06-14-2004
"Hunter Hou" <(E-Mail Removed)> wrote in message
news:cajnt0$(E-Mail Removed)...
> Hi,
>
> I have this program, compiling is passed, but when i wanted to get the
> executable file(g++ -o output input.o), it fails.
>
> Who can lead me where the error is?
>
> Thanks,
> Hunter
> ===

<snip>
>
> LocalRef.o(.text+0xba):LocalRef.cpp: undefined reference to
> `std::basic_ostream<char, std::char_traits<char> >& std::endl<char,
> std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
> >&)'

> LocalRef.o(.text+0xe0):LocalRef.cpp: undefined reference to `std::cout'
> LocalRef.o(.text+0xe5):LocalRef.cpp: undefined reference to
> `std::basic_ostream<char, std::char_traits<char> >& std:perator<<
> <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
> >&, char const*)'

> LocalRef.o(.text+0xee):LocalRef.cpp: undefined reference to
> `std:stream:perator<<(int)'
> LocalRef.o(.text+0xf7):LocalRef.cpp: undefined reference to
> `std::basic_ostream<char, std::char_traits<char> >& std:perator<<
> <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char>
> >&, char const*)'

> LocalRef.o(.text+0x100):LocalRef.cpp: undefined reference to
> `std:stream:perator<<(int)'
> LocalRef.o(.text+0x109):LocalRef.cpp: undefined reference to
> `std:stream:perator<<(std:stream& (*)(std:stream&))'
> LocalRef.o(.text+0x1a:LocalRef.cpp: undefined reference to
> `std::ios_base::Init::Init()'
> LocalRef.o(.text+0x1c7):LocalRef.cpp: undefined reference to
> `std::ios_base::Init::~Init()'
>


I had this problem before, but didn't resolve yet.
Try this simple application and see if it compile / links too:

#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!\n" << endl;
return 0;
}

--
Elias


 
Reply With Quote
 
Rolf Magnus
Guest
Posts: n/a
 
      06-14-2004
Hunter Hou wrote:

> Rolf Magnus wrote:
>> Hunter Hou wrote:
>>
>>
>>>Hi,
>>>
>>>I have this program, compiling is passed, but when i wanted to get
>>>the executable file(g++ -o output input.o), it fails.
>>>
>>>Who can lead me where the error is?

>>
>>
>>
>> Why do you think this is an "overload question"? Anyway, it looks to
>> me as if your linker doesn't find the symbols of the standard
>> library. Are you sure you used g++ for linking, not gcc, and that you
>> linked your code using the same g++ version you compiled it with?
>>

>
> In fact, I don't know if this is really caused by overload.
> I've been using g++ of mingw and never run into such a confusing
> problem.


The linker error message reports things like endl, cout and the stream
operators (actually everything from the standard library that you're
using) being missing. There seems to be no connection to the fact that
you're overloading operator*.

 
Reply With Quote
 
Hunter Hou
Guest
Posts: n/a
 
      06-14-2004
lallous wrote:


> I had this problem before, but didn't resolve yet.
> Try this simple application and see if it compile / links too:
>
> #include <iostream>
>
> using namespace std;
>
> int main()
> {
> cout << "Hello world!\n" << endl;
> return 0;
> }
>
> --
> Elias
>


My test.cpp is as exactly same as yours, it works.That's why the above
error is confusing me.

Hunter
 
Reply With Quote
 
John Harrison
Guest
Posts: n/a
 
      06-14-2004

"Hunter Hou" <(E-Mail Removed)> wrote in message
news:cak36i$(E-Mail Removed)...
> lallous wrote:
>
>
> > I had this problem before, but didn't resolve yet.
> > Try this simple application and see if it compile / links too:
> >
> > #include <iostream>
> >
> > using namespace std;
> >
> > int main()
> > {
> > cout << "Hello world!\n" << endl;
> > return 0;
> > }
> >
> > --
> > Elias
> >

>
> My test.cpp is as exactly same as yours, it works.That's why the above
> error is confusing me.
>


OK well start taking the obvious troubleshooting steps. Gradually cut out
code from the program that doesn't work, until you have a hello world
program. When it starts working again you know that the last thing you
removed was the problem.

Personally I don't think there is anything wrong with your code, I would
expect there is something wrong with the way you are compiling and linking
your program or something wrong with the way you have installed your
compiler.

John


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Overload operator << question. Harry C++ 2 12-01-2005 03:58 AM
operator<< overload question Ook C++ 8 10-23-2005 05:04 AM
function overload (not operator overload) Ying-Chieh Liao Perl Misc 3 10-11-2004 11:24 AM
How use the overload of>> (or<<) of a class in the overload of << and >> of another class? Piotre Ugrumov C++ 3 01-25-2004 08:08 PM
Re: Operator + overload question/error John Harrison C++ 1 08-16-2003 11:29 PM



Advertisments