---
title: "method pointers"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28146-method-pointers"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "fnolis"
published: "2002-01-07T08:19:00.000Z"
updated: "2002-01-08T08:08:00.000Z"
replies: 4
views: 369
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28146-method-pointers"
---

# method pointers

## #1 — fnolis, 2002-01-07T08:19Z

Varför får jag inte använda min methodpekare?

\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
\#include \<iostream\>
using namespace std;

class A
{
   public:
   void function( void )
   {
       cout \<\< "A::function( void )" \<\< endl;
   }
};

class B : public A
{
    void (A::\*funcPnt)( void );

public:
	
    B( void )
    {
        funcPnt = &A::function;
    }

    void UseFunctionPointer( void )
    {
        cout \<\< "B::UseFuntionPointer" \<\< endl;
        // FUNKA DÅ! grrr....
        //funcPnt();
    }
};

int main( int argc, char\* argv\[\] )
{
    B x;
    x.UseFunctionPointer();
	
    return 0;
}

Om jag försöker så får jag:
error C2064: term does not evaluate to a function

Permalänk: https://www.webforum.nu/p/28146

## #2 — Reza, 2002-01-07T17:54Z

Prova med :
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
void UseFunctionPointer( void )
{
cout \<\< "B::UseFuntionPointer" \<\< endl;
// FUNKA DÅ! grrr....
(this-\>\*funcPnt)();
}

När det gäller funktions pekare till medlemsfunktioner, så måste man använda sig av \* operatorn för att referera till funktions pekaren. Jag har ingen bra förklaring till varför det är så, men en gissning är att lösa namnkonflikter som kan uppstå i samband med användandet av funktions pekare till medlemsfunktioner.

Permalänk: https://www.webforum.nu/p/401432

## #3 — fnolis, 2002-01-08T07:45Z

Tackar tackar! Men det funkade inte riktigt... man var tvyngen att ha en pekare till classen som metoden tillhör plus din syntax

\[KOD\]
void UseFunctionPointer( void )
{
A\* ap;
cout \<\< "B::UseFuntionPointer" \<\< endl;
(ap-\>\*funcPnt)();
}
\[KOD\]

\[Redigerat av fnolis den 08 jan 2002\]

Permalänk: https://www.webforum.nu/p/401433

## #4 — Reza, 2002-01-08T08:06Z

Anledningen till att det inte fungerade med this-pekaren, var förmodligen att du slutade ärva från klassen A, och då är du tvungen att ha en objekt av klassen.

Men om du ärver från klassen A (som du gjorde i din första kod) kommer det jag skrev (this-pekaren) att fungera!

Permalänk: https://www.webforum.nu/p/401434

## #5 — fnolis, 2002-01-08T08:08Z

Aha! thanx!

... hatar när man fastnar med sådanna problem...

Permalänk: https://www.webforum.nu/p/401435

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28146-method-pointers
