簡體   English   中英

使用/typedef 限制為 class scope

[英]Limit using/typedef to class scope

我需要以某種方式將 function 原型存儲在 class 內,但是當我嘗試這樣做時它會自動變為全局。

原型是通過模板給出的,但我不能直接使用它,因為我在線程成員 function 內部使用它,它必須是 static (否則,我會因為this指針而破壞回調原型)。

我不能讓它 go 全局,因為我需要運行 class 的多個實例,並且原型會變得混亂。

有沒有辦法做到這一點?

template<class proto>
class cl
{
private:
    using m_proto = proto;
    void* addr;
public:
    static void thread(void* p)
    {
        // p receives a pointer to the current class
        cl* clp = (cl*)p;
        ((m_proto)clp->addr)();
    }
};

您可以使用

void (*addr)();

這將addr聲明為void (*)()類型的成員變量。

您可以通過使用使其更具可讀性。

using my_ptr_type = void (*)();
my_ptr_type addr;

暫無
暫無

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

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