2016-06-01 12 views
0

を入れ子にすることができることは、私はAのように外部クラスと内部クラスB私はC++で内部クラスのオブジェクトを作成したい、またはクラス

template <class T, class K> 
class A::public T::RadioSignal, public VarMethod<T> { 
private: 
B *bObject; 
public: 
class B : public std::vector<SamplePoint*> 
    { 
    public: 
     B(A<K, T> *outerInstance); 
    }; 
} 

があると、私はエラーの下に取得しています:不明なタイプ名「B」を

+0

私は理由を知っていますか? – Tarun

+1

公開セクションの後に私用セクションを移動しますか? – NathanOliver

答えて

2

このエラーは、B *bObject;にありますか?しかしその瞬間、class Bはまだ定義されていません。

先行する内部クラスを定義するか、前方参照を使用します。 (class B;はおそらく十分です?)

編集:あなたがいないポインタだけでなく、Bのより多くのものを使用している場合(のようなB bObject; - >class B;は十分ではないだろうが、あなただけB *を使用しているとして、それが十分でなければなりません私はクラスBの存在を宣言するだけです。そして、再び、私は裸のポインタの使い方から遠ざかっていきます。まず、完全なクラスBを宣言してから、Aのメンバーインスタンスとして直接B bObject;を宣言してください。新しい/削除を処理する必要はありません

+0

私の間違い! – Tarun

関連する問題