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.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.