私の両方のクラス: 親と子は (今のところ) 同じで、同じコンストラクターを持っています。
class Parent{
protected:
string name;
public:
Parent(string &n, vector <int> &v) {
/* read n and v into vars */
};
class Child : public Parent {
public:
Child(string &n, vector <int> &v) : Parent(n, v) {}
};
vector <int> val;
string nam, numb;
if(val[0] == 0)
Child* ptr = new Child(nam, val);
else
Parent* ptr = new Parent(nam, val);
myMap.insert(Maptype::value_type(numb, ptr) );
Child* ptr オブジェクトを Parent* ptr オブジェクトとして渡すことは合法ですか? ポインターの型が同じと聞いたので、大丈夫なはずです。次に、なぜ警告が表示されるのですか: 未使用の変数 'ptr' 警告: 未使用の変数 'ptr' エラー: 'ptr' はこのスコープで宣言されていませんか? 私のプログラムは、親クラスのみで正常に動作します。親権を継承していないように感じます。