Re: [Dev-C++] Getting the wrong output



Yes, I just notice that, so this are the changes I have made:

--- Money.hpp
friend std::ostream& std::operator<<( std::ostream&, const jme::Money& );
friend std::istream& std::operator>>( std::istream&, jme::Money& );


--- Money.cpp
std::operator<<( std::ostream& os, const jme::Money& obj ) {
    os << obj.getAmount();
    return os;
}
std::istream&
std::operator>>( std::istream& is, jme::Money& obj ) {
    is >> obj.amount;
    return is;
}
--------------
But this is giving me linker errors sayng:


=========  ERROR ===========
In file included from money.cpp:2:
money.hpp:67: error: `std::ostream& std::operator<<(std::ostream&, const
jme::Money&)' should have been declared inside `std'
money.hpp:68: error: `std::istream& std::operator>>(std::istream&,
jme::Money&)' should have been declared inside `std'


What am I doing wrong!!?

Again thanks for you help.




> What namespaces are you using.
>
> You have declared the friend operator as:
>   std::ostream& operator<<(...)
> and implemented it as:
>   std::ostream& jme::operator<<(...)
>
> Without a maching output operator, the compiler will emit the pointer to
> the object instead.
>
> /Per W
>
> On Thu, 30 Jun 2005 jalkadir gosonic ca wrote:
>
>> In my class, when I use the "getter" to display the value I get the
>> right
>> output, but when I try using the overloaded extractor operator (<<) I
>> get
>> some hex value displayed. Here is some of the code:
>> --- snip
>> Main.cpp
>> int main() {
>>    Money money("12.21");
>>
>>    std::cout << "Value is: " << money.getAmount() << std::endl; // 12.21
>>    std::cout << "Value is: " << money << std::endl; // hex value????
>>    return 0;
>> }
>>
>>
>>
>> The class goes like this:
>> ---snip
>> Money.hpp
>> class Money {
>>  protected:
>>    float amount;    //!< This variable holds the numerical value
>>  public:
>>    //! Constor
>>    Money(const std::string&);
>>
>>    //!Copy constructor
>>    Money( const Money& );
>>
>>    //!Destructor
>>    ~Money() { std::cout << amount << std::endl;} //<<=== 12.21
>>
>>    // Setters
>>    ...
>>    // Getters
>>    const float getAmount() const;
>>
>>    // Overloaded operators
>>    .....
>>    friend std::ostream& operator<<( std::ostream&, const jme::Money& );
>>    friend std::istream& operator>>( std::istream&, jme::Money& );
>>    ....
>> } ; //Money
>>
>>
>>
>> and the code looks like this
>> --- snip
>> jme::Money::Money( const std::string& x){
>>     this->setAmount(x); // this metho converts the std::string to a
>> float
>> }
>> const float jme::Money::getAmount() const {
>>     return this->amount;
>> }
>> std::ostream&
>> jme::operator<<( std::ostream& os, const jme::Money& obj ) {
>>     os << obj.getAmount(); //<<==== 0x4b1120
>>     return os;
>> }
>> ----- end of snip
>> As you can see when using the member method getAmount() the value
>> displayed is in the right format, however the extractor operator is not
>> doing
>
>
>
> -------------------------------------------------------
> SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> from IBM. Find simple to follow Roadmaps, straightforward articles,
> informative Webcasts and more! Get everything you need to get up to
> speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
> _______________________________________________
> Dev-cpp-users mailing list
> Dev-cpp-users lists sourceforge net
> TO UNSUBSCRIBE: http://www23.brinkster.com/noicys/devcpp/ub.htm
> https://lists.sourceforge.net/lists/listinfo/dev-cpp-users
>




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]