Я пытаюсь использовать указатель на функцию-член для динамического доступа через связанный список.(Я изучаю C ++ уже несколько месяцев)
A сделал класс.Конструктор класса создает связанный список.Каждый узел содержит некоторые данные, указатель на следующий узел и указатель на функцию (я пробую этот последний ... пока не работает)
Я могу использовать указатель на функцию-член в конструктореНО я не понимаю, как передать это значение указателя в другие структуры или функции.Может быть, я что-то упустил ...
Заранее спасибо за помощь.
class linkedFct{
private:
struct node *firstNode;
struct node *lastNode;
struct node *newNode;
struct node *currentNode;
public:
linkedFct(){
firstNode = (NULL);
lastNode = (NULL);
void (linkedFct::*ptrFct)();
ptrFct = &linkedFct::theFunctionA;
//Call the function by pointer... this works!!! Great!
(this->*ptrFct)();
//Add a first node to the list
addNode("Try a first task");
//addNode("Try a first task", &(this->*ptrFct()));
//Trying to include the member function pointer into the list data
//this is not working!!! Don't understand how to pass that pointer
//to a member function
}
void addNode(string aName){
//void addNode(string aName, void (linkedFct::*ptrF)()){
//I am trying to implement something like this
//Trying to pass a member function pointer thru this attribute
newNode = new node;
newNode->name = aName;
//newNode->ptrFunction = ptrF; //Trying to implement something like this***
lastNode = newNode;
if (!firstNode){
firstNode = newNode;
}
else{
currentNode->nextNode = newNode;
}
currentNode = newNode;
};
Попытка использовать указатель внутри списка ..ммм ... не работает таким образом
void processTheList(){ //Browse the list
struct node *thisCurrentNode;
void (linkedFct::*ptrRunFct)();
thisCurrentNode = firstNode; //Start from top
int i = 0;
while (thisCurrentNode){
i++;
cout << "Node #" << i << ": Name: " << thisCurrentNode->name << endl; //Print the string
ptrRunFct = thisCurrentNode->ptrFunction;
ptrRunFct();
cout << endl;
thisCurrentNode = thisCurrentNode->nextNode;
}
}
Структура узла определяется следующим образом:
struct node{ //A node struct to implement a linked list
string name; //Some data
void (linkedFct::*ptrFunction)(); //A pointer to member function... ****[That's what I am trying!!!]****
struct node *nextNode; //Pointer to next node
};