私は継承の概念も C++ も初めてなので、私の問題は本当にばかげているかもしれません...
class A {
public :
A() {}
A(string name) {name_ = name}
private :
string name_;
}
class B : public A {
public :
B() {}
B(string name, int number) {
name_ = name;
number_ = number;
}
private :
string name;
int number;
}
class C {
public :
C() {}
void addClass(int id, A* a) {
map[id] = a;
}
private :
Hash_Map<int, A*> map;
}
void main() {
C* c = new C();
for (int i = 0; i < 10; i++) {
B* b = new B("randomName", 50);
c->addClass(i, b); //1st problem
delete b; //2nd problem
}
}
最初の問題:「c」の「マップ」は、クラス「B」の属性「番号」を保持するべきではありませんか? A* をパラメーターに入れたことはわかっていますが、A から派生したクラスが複数ある場合、どのようにすればよいでしょうか?
2 番目の問題:「b」を削除すると、「マップ」のすべての属性がランダムな値になるようです。問題は、「b」を新しいオブジェクトにコピーする必要があることだと思いますが、addClass() パラメーターとして「A*」がある場合、どうすればよいでしょうか? 私のポインタ b はその親クラスに変換されているようです
編集:忘れていたコードのいくつかを変更する必要がありました...