-4

私は次のコードを持っています:

class B{
    protected:
    X *x;
    public:
    function(char *data){
        // access x
        // works fine
    } 
};

class D: public B {
    function2(char *data)
    {
            // access x
            // gets garbage
    } 
};

ポインターであるメンバー変数があります。さらに、このポインターは内部 にあり"data" ますが、クラス D でアクセスするとゴミが表示されます。

誰かが私を助けてくれませんか...

4

1 に答える 1

0

私は精神的なデバッグ帽子をかぶって、おそらく次のようなことをしているという結論に達しました:

class Packet
{
public:
  Gizmo* gizmo_;
};

class Processor
{
public:
  void ProcessPacket(char* packet);
};

// ...

Packet packet;
// packet filled with goodies

Processor proc;
proc.ProcessPacket(reinterpret_cast<char*>(&packet.gizmo_));

私は正しいですか?

もしそうなら、私の推測では、Gizmoあなたが指している がどういうわけか範囲外に落ちた - それによって破壊された - またはキャストを間違って実行した.

于 2012-10-19T18:52:39.827 に答える