将使用/类型定义限制为类范围
Limit using/typedef to class scope
我需要以某种方式将函数原型存储在类中,但是当我尝试这样做时,它会自动成为全局函数。
原型是通过一个模板给出的,但我不能直接从那里使用它,因为我在线程成员函数中使用它,该函数必须是静态的(因为否则,我会因为this
指针而破坏回调原型(。
我不能让它走向全局,因为我需要运行该类的多个实例,并且原型会变得混乱。
有没有办法做到这一点?
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;
相关文章:
- 通过函数指针定义类范围之外的方法
- 创建包装升压适配器的自定义范围类
- 将使用/类型定义限制为类范围
- 如何范围检查 C++14 个用户定义的文本?
- 有没有办法将C++结构/类中的所有定义都纳入范围而不从中派生?
- 定义一个 void f(void) 函数,但使用来自同一范围的变量?
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- 是否未定义将对函数范围变量的引用作为值返回
- C++11:没有复制构造函数的自定义基于范围的循环
- 使自定义范围 v3 视图可管道化
- 如何自定义设置随机的范围?
- C++未定义的行为unordered_map为基于范围的 for 循环中的右值
- "... already defined in *.obj"但我没有在同一范围内两次定义任何变量
- 如何使用提升范围将自定义迭代器封装在函数中
- 基于范围的 for 循环,用于包含C++中的指针的自定义链表,仅返回对象
- 类模板中定义的朋友函数范围定义的范围是什么?
- Visual Studio中的解决方案范围定义
- 是否为包含相同值的范围定义 std::nth_element
- c++在if块内为函数范围定义变量