C
chris
Guys, I have the following piece of code. Could you please help me understand why
b.ToString( ) cannot be called while b.foo( ) can? When I compile I get (gcc, but
visual studio gives the same pretty much). Thanks
$ g++ -Wall foo.cpp
foo.cpp: In function `int main(int, char**)':
foo.cpp:21: error: no matching function for call to `Bar::ToString()'
foo.cpp:14: note: candidates are: virtual std::string Bar::ToString(std::string&) const
#include <stdlib.h>
#include <string>
using namespace std;
template <typename _T> class Foo {
public:
virtual std::string ToString (std::string& pfx) const = 0;
std::string ToString ( ) const { return(ToString(std::string( ))); }
virtual void* _foo ( ) const = 0;
void* foo( ) const { return (_foo( )); }
};
class Bar: public Foo<int> {
public:
std::string ToString (std::string& pfx) const { return (std::string("test")); }
void* _foo ( ) const { return(NULL); }
};
int main (int argc, char **argv) {
Bar b;
b.foo( );
b.ToString( );
return (0);
}
b.ToString( ) cannot be called while b.foo( ) can? When I compile I get (gcc, but
visual studio gives the same pretty much). Thanks
$ g++ -Wall foo.cpp
foo.cpp: In function `int main(int, char**)':
foo.cpp:21: error: no matching function for call to `Bar::ToString()'
foo.cpp:14: note: candidates are: virtual std::string Bar::ToString(std::string&) const
#include <stdlib.h>
#include <string>
using namespace std;
template <typename _T> class Foo {
public:
virtual std::string ToString (std::string& pfx) const = 0;
std::string ToString ( ) const { return(ToString(std::string( ))); }
virtual void* _foo ( ) const = 0;
void* foo( ) const { return (_foo( )); }
};
class Bar: public Foo<int> {
public:
std::string ToString (std::string& pfx) const { return (std::string("test")); }
void* _foo ( ) const { return(NULL); }
};
int main (int argc, char **argv) {
Bar b;
b.foo( );
b.ToString( );
return (0);
}