Listing 8

// main.cxx

#include <iostream>
#include <typeinfo>
#include "Plugin.h"
#include "TextPlugin.h"

using namespace std;

int main(int argc, char* argv[])
{
    try
    {
    Plugin& plugin = PluginManager::instance().findPlugin("language");
    TextPlugin& text = dynamic_cast<TextPlugin&>(plugin);

    cout << "Name: " << text.pluginName() << endl
         << "Type: " << text.pluginType() << endl
         << "String: " << text.getSayHelloString() << endl;
    }
    catch(const SharedLibraryException& error)
    {
    cerr << error.getError() << endl;
    return 101;
    }
    catch(const bad_cast& ex)
    {
    cout << "Cast to TextPlugin Failed" << endl;
    return 102;
    }
    return 0;
}