我有一个 C++ 类 FooCpp、一个 C++ 接口 IFOO 和一个 Obj-c 类 FooObjC,在 IFOO 上我有:
public:
virtual ~IFOO() {};
virtual void seePointer(FooCpp* p);
在 FooCpp 我有:
在.h
class FooCpp : virtual public IFOO {
public:
virtual ~FooCpp() {};
void seePointer(FooCpp* p);
}
和.cpp
void FooCpp::seePointer(IFOO* p){
printf("%p\n",p);
}
在 FooObjC 我称之为:
FooCpp *foo = new FooCpp();
FooCpp *f = new FooCpp();
printf("%p\n",f);
foo->seePointer(f);
当我这样做时,我得到了以下日志:
0x848f520
0x61630002
为什么点地址被改变了?因为这是我的程序出错,有人知道为什么会这样以及如何解决它?