c++ - @selector 在C++中的实现

标签 c++ objective-c objective-c++

我需要在 C++ 中实现类似于 @selector(Objecitive-C) 的机制。通过谷歌搜索我发现了。它对我没有帮助...

template <class AnyClass> 
class ClassCallback
{
    // pointer to member function
    void (AnyClass::*function)(void);

    // pointer to object
    AnyClass object;  
public:

    ClassCallback()     {  }
    ~ClassCallback()    {  }

    ClassCallback(AnyClass _object, void(AnyClass::*_function)(void))
    : object( _object ), function( _function ) { };

    virtual void call(){ 
         (object->*function)();
    };

};

是否有任何不同的实现方法类似于 objective-C 之类的

typedef struct objc_selector    *MY_SEL;  

需要实现 objc_selector 是objective-C中的抽象类。如何实现 objc_selector 任何想法...

最佳答案

只需在 Objective-C 消息传递系统上使用选择器进行一些精确操作。

选择器 (SEL) 是一种不透明类型,但它只是类似于 char * 的东西,仅包含方法的名称(因此许多类可以共享相同的选择器)。

Obj-C 方法是一个包含以下内容的结构:

  1. SEL 字段
  2. 一个 char * 包含有关返回类型和参数的信息。
  3. IMP 字段

类似于:

struct objc_method
{
    SEL    method_name;
    char * method_types;
    IMP    method_imp;
};
typedef objc_method Method;

IMP 只是一个 C 函数指针。

关于c++ - @selector 在C++中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734453/

相关文章:

c++ - 涉及类和结构的构造函数/析构函数

c++ - 如何在 Google Test 中使用不同模板测试多个模板化类的相同行为?

ios - 以编程方式创建不同屏幕尺寸下的对象

objective-c - 要创建一个空字典,[NSMutableDictionary dictionary] 或 [[NSMutableDictionary alloc] init]?

objective-c - Objective C Cocoa 从单独的线程更新 gui

c++ - Objective C++ 代码中的合成属性 setter 未调用复制构造函数

c++ - while 循环在 break 之后再循环一次

c++ - 使用已删除的函数 ‘sf::RenderWindow& sf::RenderWindow::operator=(const sf::RenderWindow&)’

ios - UIActivityViewController 在导航栏上显示电子邮件模态视图 Controller

c++ - 包含 C++ 源文件中的 Obj-C++ header