与指针-c++(目标C)的混淆
Confusion with Pointers-c++(Objective C)
我只是在浏览现有代码,并且对函数指针如何获得感到困惑在基类的构造函数以及子类调用的函数中调用类,因为此函数指针尚未分配函数的地址到点自。
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 有一个很棒的功能——块。我怀疑它们比函数指针更方便、更灵活。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- memcpy是否取决于源指针和目标指针的类型
- 当应该删除其目标时,为什么此智能指针给出正确的结果
- C++ - 无法打印字符指针的目标
- std::目标获取指针参数的线程错误
- 更改函数中指针的目标(指向动态创建的对象)
- CLASS_NAME未声明 - 无法dynamic_cast(目标不是指向完整类型的指针或引用)
- C++ 指针目标返回错误值
- 正在从常量指针参数的目标复制对象以供临时使用
- C++:指针,查找其目标的地址
- 我可以修改作为参数传递的指针的目标吗?
- 如何检查LLVM StoreInst的目标是否是函数指针
- 序列化指针本身而不是目标对象
- 目标c-在c++中用指针在类中输入数据
- 与指针-c++(目标C)的混淆
- 目标 C 中的函数指针