2011-01-08 13 views
0

私はCiFという名前のクラスを持っていて、というコンストラクタポインタをCmanagerという名前の新しいクラスに移動したいと思います。 私はこのような何か試してみました: 感謝どうすればC++であるクラスのポインタを別のクラスに移動することができます

+3

おそらく、達成したいことを示すコード(または少なくともいくつかの擬似コード)を表示できます。 –

答えて

1

次のコードを助けてください

CiF::CiF() : Cmanager(new Cmanager(CiF THIS)) 
{ 
} 

は、1つのクラスのポインタがctorの中でお互いに与えられている方法を示しています。私はそれがあなたが達成しようとしていることだと思う。

私はこのようなコードを使用しないことを強くお勧めしますが、あなたのユースケースに関する十分な情報を提供していないため、代替手段を提供することはできません。

おそらくスマートポインタと一般的なクラスデザインを見てください。 (あなたがオブジェクトを所有しているクラスを制御する必要がある他のクラスへのポインタを与えた場合など、それを削除します)

class CiF; 

class Cmanager 
{ 
public: 
    Cmanager() : 
     cif_(0) 
    {}; 
    void setCiF(CiF* cif) 
    { 
     cif_ = cif; 
    } 
private: 
    CiF* cif_; 
}; 

class CiF 
{ 
public: 
    CiF() : 
     cmanager_(Cmanager()) 
    { 
     cmanager_.setCiF(this); 
    } 

private: 
    Cmanager cmanager_; 
}; 
+1

上記の場合、 'class CiF'は前方宣言されるべきです。 – Mahesh

+0

あなたは正しいと思います... – MOnsDaR

1

アウトがCiFCmanagerとの関係を有するが、私はそれを達成することはできないと思います。

#include <iostream> 
class Cmanager 
{ 
}; 

class Cif:public Cmanager 
{ 
    Cmanager *ptr ; 
    public: 
    bar() : ptr(this) 
    { 
    } ; 
}; 

int main() 
{ 
    Cif obj ; 
    return 0; 
} 
関連する問題