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.