У меня есть следующий код классаПередача указателя члена класса (Map) в качестве аргумента по умолчанию к другому методу класса
class Info {
public:
inline void append(int i) { var1.push_back(i); }
private:
std::list<int> var1;
};
class Key {
public:
int getId() {return id};
private:
int id;
};
class Base {
public:
void& getMap() { return myMap;}
protected:
map<Key*,Info*> myMap;
};
class B {
public:
void check(bool val,map<Key*,Info*>* = NULL) {
// while processing I get key* as key1
Key* key1;
Info* info = new Info;
info->append(1000);
myMap.insert(std::pair<Key*,Info*>(key1,info));
}
};
class Derived : public Base {
public:
void func() {
// since Derived is subclass of Class Base so we access the myMap
bobject.check(true,&myMap);
}
private:
B bobject;
};
class Client {
private:
Base b_report;
public:
void client_func() {
map<Key*,Info*> myMapClient = b_report->getMap();
// will be using myMapClient;
}
};
Три вопроса
- есть какие-либо проблемы в этом коде. мы можем передать указатель одной переменной-члена в зависимости от объекта другого класса
- Как очистить MyMap класса Base
- когда очистить MyMap класса Base
Отформатируйте сообщение должным образом, прежде чем нажать Submit. –
Один вопрос за вопрос пожалуйста. –
Почему вы храните указатели на карте? Если объекты arent должны принадлежать чему-то другому, просто сохраните объекты на карте, тогда вам не придется беспокоиться о том, чтобы очистить. – user463035818