2017-01-28 4 views
1

私の現在のプロジェクトでは少し問題があります。このプロジェクトは、ファイルからデータ行を取り出し、すべてが基本クラスを継承するクラスオブジェクトの配列を作成することから成ります。私はそれがタイプサブクラスのあるべき配列に新しいオブジェクトを追加すると、正しい、サブクラス以来継承されたクラスオブジェクトの配列を作成するにはどうすればよいですか?

class BaseClass { 
    // create empty and non-empty constructor 
} 

class SubClass : public BaseClass { 
    // create constructor specifically for this class 
} 

int main() { 
    BaseClass *array[size]; 
    array[index] = new SubClass(); 

    return 0; 
} 

がBaseClassの継承:

だから、これは私がこれまで理解して何ですか?

私はプログラムをデバッグしてそのオブジェクトを見ると、私ができる必要がある操作のためのSubClassメソッド/変数を指し示すことができません。私は答えを探していたとき

は今、私は、静的なキャストに出くわしたので、私はの範囲にそれを試してみました:

(static_cast<SubClass*>(array[index])->subclass_variable) = some_value 

しかし、それはどちらか動作するようには思えない、これですべてのヘルプは大だろう感謝。そして、あなたがarray[index]->f();を呼び出すことができます

class BaseClass { 
    // create empty and non-empty constructor 
    virtual void f() = 0; 
} 

class SubClass : public BaseClass { 
    // create constructor specifically for this class 
    virtual void f() { std::cout << "I am your SubClass" << std::endl; } 
} 

:これを処理する

+0

OK、実際の質問は何ですか? –

+0

個別にアクセスして操作できる、継承されたクラスオブジェクトの配列を作成する方法。 –

答えて

2

一つの方法は、​​のベースクラスと実装インターフェース(仮想メソッド)を定義しています。

別の方法は、クラスの訪問/タイプ切り替えです。もう1つはNVIですが、これはやや高度なトピックです。

+0

ありがとうございました!それはそれを解決し、今は完全に実行され、あなたは男です! –

関連する問題