Strange inheritance bug with type conversion?

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Feb 2005
Posts: 466
Reputation: winbatch is on a distinguished road 
Solved Threads: 18
winbatch's Avatar
winbatch winbatch is offline Offline
Posting Pro in Training

Strange inheritance bug with type conversion?

 
0
  #1
Nov 23rd, 2008
Consider this working code:
#include <iostream>

using namespace std;
class Base
{
        public:
        void print(string val)
        {
                cout<<val<<endl;
        }

        virtual void print(int val)
        {
                char temp[1000];
                sprintf( temp, "%d", val );
                string tempstring = temp;
                print ( tempstring );
        }
};

int main()
{
        Base a;
        string whatever= "BLAH";
        a.print(whatever);
        a.print(2);
}

./Test3
BLAH
2

Can you explain why I'm getting this compile error when attempting to do some inheritance? I want it to call the Base::print (int) function which in turn should call the NewOne::print( string) function..

#include <iostream>

using namespace std;
class Base
{
        public:
        virtual void print(string val)=0;
        void print(int val)
        {
                char temp[1000];
                sprintf( temp, "%d", val );
                string tempstring = temp;
                print ( tempstring );
        }
};

class NewOne : public Base
{
        public:

        virtual void print(string val)
        {
                cout<<"In NewOne: "<<val<<endl;
        }

};
int main()
{
        NewOne a;
        string whatever= "BLAH";
        a.print(whatever);
        a.print(2);

}

g++ Test2.cpp -o Test2
Test2.cpp: In function `int main()':
Test2.cpp:32: error: invalid conversion from `int' to `const char*'
Test2.cpp:32: error:   initializing argument 1 of `std::basic_string<_CharT,
   _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT =
   char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'

Note I've also tried making the remaining functions virtual but to no avail.
Last edited by winbatch; Nov 23rd, 2008 at 3:12 pm.
Reply With Quote Quick reply to this message  
Join Date: Feb 2005
Posts: 466
Reputation: winbatch is on a distinguished road 
Solved Threads: 18
winbatch's Avatar
winbatch winbatch is offline Offline
Posting Pro in Training

Re: Strange inheritance bug with type conversion?

 
0
  #2
Nov 23rd, 2008
Looks like this was the solution:

http://www.parashift.com/c++-faq-lit....html#faq-23.9

(I added a 'using Base::print' to my NewOne class)
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Other Threads in the C++ Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC