Listing 3
// SharedLibrary.h
#include <string>
class SharedLibraryException
{
public:
SharedLibraryException(const char* error) : m_error(error) { }
const char* getError() const {return m_error.c_str();}
private:
std::string m_error;
};
class SharedLibrary
{
public:
static SharedLibrary* openSharedLibrary(const char* name)
throw (SharedLibraryException);
virtual ~SharedLibrary() {}
virtual void* findSymbol(const char* name) = 0;
// ...
};
template<class T>
T findSymbol(SharedLibrary& sl, const char* name)
{
return (T)sl.findSymbol(name);
}