![](/img/trans.png)
[英]Using a typedef – based on template-patameter for class – outside scope of class
[英]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.