Skip to content

Instantly share code, notes, and snippets.

@scottdriscoll
Created July 13, 2014 01:46
Show Gist options
  • Save scottdriscoll/9aeedd7fdc725c40b692 to your computer and use it in GitHub Desktop.
Save scottdriscoll/9aeedd7fdc725c40b692 to your computer and use it in GitHub Desktop.
c++ function pointers
#include <iostream>
class BaseClass
{
protected:
std::string id;
public:
BaseClass(std::string id)
{
this->id = id;
}
virtual void printId(void) = 0;
};
class ExtendedClass1 : BaseClass
{
public:
ExtendedClass1(std::string id) : BaseClass(id) {}
void printId(void)
{
std::cout << "The id from 1 is '" << id.c_str() << "'\n";
}
};
class ExtendedClass2 : BaseClass
{
public:
ExtendedClass2(std::string id) : BaseClass(id) {}
void printId(void)
{
std::cout << "The id from 2 is '" << id.c_str() << "'\n";
}
};
int main(void)
{
// Create two classes
ExtendedClass1 *e1 = new ExtendedClass1("class 1");
ExtendedClass2 *e2 = new ExtendedClass2("class 2");
// Create function pointer
void (BaseClass::*fncPtr)(void) = &BaseClass::printId;
// Pointer to hold two classes
BaseClass *storedPtr = NULL;
// Test class 1
storedPtr = (BaseClass *)e1;
(storedPtr->*fncPtr)();
// Test class 2
storedPtr = (BaseClass *)e2;
(storedPtr->*fncPtr)();
std::getchar();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment