我有一个类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;
};
所有信息都存储在一个 vector 中,该 vector 包含指向类 User
的指针
vector<User*> userVector
如何遍历指向类的指针 vector 并调用类的相应方法??
如果它是 User 对象的 vector ,我可以声明一个迭代器 vector<User>::iterator p
, 是否有指向对象的指针的等价物,我如何根据对象调用类的相应方法
编辑,这是我尝试过的
vector<User*>::iterator p;
p=userVector.begin();
while ( p != userVector.end() )
{
//how to dereference
p++;
}
最佳答案
我建议按优先级顺序遵循以下 3 种解决方案。您可以选择任何您喜欢的内容。
如果您使用的是 C++11 功能,则可以使用基于范围的循环来简化语法。这也是明智的做法。
使用 for_each 循环。
否则,这样使用会更优化。
for( vector<User*>::iterator itr = userVector.begin(), itr_end = userVector.end(); itr != itr_end; ++itr ) { std::cout << (*itr)->getRole() << std::endl; }
在这里,您不会在循环遍历的每次迭代中都收到结束迭代器。
关于c++ - 如何遍历类指针的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21410581/