与指针-c++(目标C)的混淆

Confusion with Pointers-c++(Objective C)

本文关键字:目标 指针 -c++      更新时间:2023-10-16

我只是在浏览现有代码,并且对函数指针如何获得感到困惑在基类的构造函数以及子类调用的函数中调用类,因为此函数指针尚未分配函数的地址到点自。

sMsgD.h://sMsg 的派生类

#define DECLARE_MSG(ClassName,ClassID)                  
/*lint -e(1511) we want to hide sMsg::NewMsg */         
static ClassName* FromMsg(sMsg* pMsg)                   
{                                                       
 return dynamic_cast<ClassName*>(pMsg);                 
}                                                       
static sMsg* NewMsg()                                   
{                                                       
  return new ClassName;                                 
}                                                       
enum {ID = ClassID};

sMsgD.cpp://sMsg 的派生类

void f()
{
stStruct* pf;
pf->pFunc();
}

sMsg.cpp://基类

class sMsg{
typedef sMsg* (*tMsg)(void);
typedef struct
{
    int         n;         
    NSString*   s;        
    tMsg    pFunc;   //calls New for particular message
} stStruct;
sMsg();
};
sMsg::sMsg(int id,'tMsg pNewMsg',const char* szName,void* pt,size_t uSize)
{
 //stmts;
}

这是C++中的函数指针声明和定义。但是我找不到如何使用函数NewMsg()的地址初始化此函数指针。sMsg 也是基类,在其构造函数中传递函数指针。

如何在目标C中实现相同的目标?

我认为这是标准的C语法,而不是特定于C++,所以它在Objective-C中应该工作相同,这是C的严格超集(所有在C中工作的东西也适用于Objective-C)。

目标 C 有一个很棒的功能——块。我怀疑它们比函数指针更方便、更灵活。