私は 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
なぜポイントアドレスが変更されたのですか?これは私のプログラムでエラーが発生するため、誰かがこれの理由と修正方法を知っていますか?