簡體   English   中英

帶有功能指針的成員變量訪問

[英]Member variable access with pointer-to-function

有沒有一種方法可以讓類成員函數指針所指向的函數訪問函數指針類的成員變量? 還是我必須將成員變量傳遞給函數?

class A {
public:

    int var;
    void(*fooPtr) (void);

    //ctor
    A(void(*funcPtr)(void)) :fooPtr(funcPtr){}
};

void foo(void) {
    int test = var;
}

A classInstance(&foo);

編譯器錯誤:在此范圍內未聲明“ var”

foo()不是A類的成員。 您只需將指向函數的指針傳遞給構造函數。 您必須將指向類實例的指針或引用傳遞給foo()函數,以便它可以訪問var實例。

class A {
public:
    int var;
    void(*fooPtr) (const A&);

    //ctor
    A(void(*funcPtr)(const A&)) :fooPtr(funcPtr){}
};

void foo(const A &a) {
    int test = a.var;
}

A classInstance(&foo);

最好使用typeddefs來避免這種冗長的函數指針構造。

class A {
typedef void(*MyPtr)(const A&);

public:
    int var;
    MyPtr fooPtr;

    A(MyPtr fooPtr) :fooPtr(fooPtr){}
};

void foo(const A &a) {
    int test = a.var;
}

A classInstance(&foo);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM