У меня есть класс User
Как перебрать вектор указателя класса
class User
{
public:
User();
User(string, string);
virtual string getRole();
void setPW(string);
void setID(string);
string getPW();
string getID();
protected:
string id;
string pw;
};
И несколько подклассов, которые наследуют от User
class Customer : public User
{
public:
Customer();
Customer(string, string,string,string, string, string, string, string, string);
virtual string getRole();
string getSname();
string getFname();
string getTitle();
string getAddress();
string getTown();
string getCity();
string getPostalCode();
void setSname(string);
void setFname(string);
void setTitle(string);
void setAddress(string);
void setTown(string);
void setCity(string);
void setPostalCode(string);
private:
string sname;
string fname;
string title;
string address;
string town;
string city;
string postalcode;
};
Вся информация хранится внутри вектора, который содержит указатели класс User
vector<User*> userVector
Как выполнить итерацию вектора указателей в класс и вызвать соответствующие методы класса?
Если его вектор объекта пользователя, я могу объявить итератор vector<User>::iterator p
, есть что-то эквивалент для указателей на объект, и как я называю соответствующий метод класса в зависимости от объекта
EDIT, это то, что я попытался
vector<User*>::iterator p;
p=userVector.begin();
while (p != userVector.end())
{
//how to dereference
p++;
}
один предмет за раз. как всегда, покажите нам, что вы пробовали – ldgorman
Знаете ли вы, как использовать указатели * вне * векторов? Если это так, добавьте это знание к знанию, которое вы показываете здесь. Если нет, вернитесь на шаг и узнайте об этом в первую очередь. – molbdnilo