我对继承的概念很陌生,对 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”中的“map”不应该保留“B”类的属性“number”吗?我知道我把 A* 放在参数中,但是如果我有几个从 A 派生的类,我应该怎么做?
第二个问题:当我删除“b”时,“map”中的所有属性似乎都获得了随机值。我猜问题是我需要将“b”复制到一个新对象中,但是如果我有“A*”作为我的 addClass() 参数,我该怎么做呢?我的指针 b 似乎被转换成它的父类
编辑:不得不更改我忘记的代码中的几件事......