OBJ-C指向C 的指针已更改
Obj-c pointer to C++ has changed
我有一个c 类foocpp,c 接口ifoo和obj-c class fooobjc,在ifoo上,我有:
public:
virtual ~IFOO() {};
virtual void seePointer(FooCpp* p);
在foocpp上我有:
on .h
class FooCpp : virtual public IFOO {
public:
virtual ~FooCpp() {};
void seePointer(FooCpp* p);
}
和.cpp
void FooCpp::seePointer(IFOO* p){
printf("%pn",p);
}
和在fooobjc上,我称之为:
FooCpp *foo = new FooCpp();
FooCpp *f = new FooCpp();
printf("%pn",f);
foo->seePointer(f);
当我这样做时,我将获得以下日志:
0x848f520
0x61630002
为什么要更改点地址?因为我在程序上遇到了一个错误,所以有人知道为什么这样做以及如何修复它?
基本子对象的地址与完整对象不同并不罕见,尤其是在涉及虚拟继承时。
但是,两个指针之间的差异应该很小(小于 sizeof (FooCpp)
。
您要么有某种腐败(也许是不匹配的呼叫惯例),要么Objective-C 正在做一些很奇怪的事情,例如撕裂的代理对象。
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 当该数组的索引中没有元素时,指针指向什么?
- 我无法使用C++指针指向类方法返回的 std::vector
- 指针指向的数组的大小
- 从另一个指针指向函数的指针
- 使用指针指向对象C++对向量进行排序
- 为什么下面的代码段返回指针指向的值而不是指针的地址?
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- 为什么编译器C++不能知道指针指向派生类?
- 如何防止基类的指针指向派生类?
- 为什么第一次迭代后的指针指向随机值?
- 为什么使用父指针指向子类?
- 数组由其类自己的指针指向的大小是多少?
- 变量更改后,如何保持指针指向的初始值
- C++ 常量用于指针指向指针
- 这个指针指向给定的对象还是给定对象的地址
- 静态指针指向这个为mock for googletest定义的类内部
- 指针(指向指针)和新/malloc 向量(向量内部)c++
- 确保指向超类的指针指向c++中某个子类的对象
- 奇怪的指针指向某物模板参数