#include <iostream>
#include <string>
struct Foo {
void setEmail(std::string) {
std::cout << __func__ << ", this:" << this << std::endl;
}
void setPassword(std::string) {
std::cout << __func__ << ", this:" << this << std::endl;
}
void setName(std::string) {
std::cout << __func__ << ", this:" << this << std::endl;
}
void setAddress(std::string) {
std::cout << __func__ << ", this:" << this << std::endl;
}
void setPhone(std::string) {
std::cout << __func__ << ", this:" << this << std::endl;
}
};
int main() {
void(Foo::*functions[])(std::string) = {
&Foo::setEmail, &Foo::setPassword, &Foo::setName, &Foo::setAddress, &Foo::setPhone
};
constexpr int n = sizeof(functions) / sizeof(functions[0]);
Foo foo;
Foo *newAC = &foo;
std::cout << "newAC:" << newAC << std::endl;
for (int i = 0; i < n; ++i) {
(newAC->*functions[i])("hi");
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RydWN0IEZvbyB7CiAgdm9pZCBzZXRFbWFpbChzdGQ6OnN0cmluZykgewogICAgc3RkOjpjb3V0IDw8IF9fZnVuY19fIDw8ICIsIHRoaXM6IiA8PCB0aGlzIDw8IHN0ZDo6ZW5kbDsKICB9CgogIHZvaWQgc2V0UGFzc3dvcmQoc3RkOjpzdHJpbmcpIHsKICAgIHN0ZDo6Y291dCA8PCBfX2Z1bmNfXyA8PCAiLCB0aGlzOiIgPDwgdGhpcyA8PCBzdGQ6OmVuZGw7CiAgfQoKICB2b2lkIHNldE5hbWUoc3RkOjpzdHJpbmcpIHsKICAgIHN0ZDo6Y291dCA8PCBfX2Z1bmNfXyA8PCAiLCB0aGlzOiIgPDwgdGhpcyA8PCBzdGQ6OmVuZGw7CiAgfQoKICB2b2lkIHNldEFkZHJlc3Moc3RkOjpzdHJpbmcpIHsKICAgIHN0ZDo6Y291dCA8PCBfX2Z1bmNfXyA8PCAiLCB0aGlzOiIgPDwgdGhpcyA8PCBzdGQ6OmVuZGw7CiAgfQoKICB2b2lkIHNldFBob25lKHN0ZDo6c3RyaW5nKSB7CiAgICBzdGQ6OmNvdXQgPDwgX19mdW5jX18gPDwgIiwgdGhpczoiIDw8IHRoaXMgPDwgc3RkOjplbmRsOwogIH0KfTsKCmludCBtYWluKCkgewogIHZvaWQoRm9vOjoqZnVuY3Rpb25zW10pKHN0ZDo6c3RyaW5nKSA9IHsKICAgICZGb286OnNldEVtYWlsLCAmRm9vOjpzZXRQYXNzd29yZCwgJkZvbzo6c2V0TmFtZSwgJkZvbzo6c2V0QWRkcmVzcywgJkZvbzo6c2V0UGhvbmUKICB9OwoKICBjb25zdGV4cHIgaW50IG4gPSBzaXplb2YoZnVuY3Rpb25zKSAvIHNpemVvZihmdW5jdGlvbnNbMF0pOwoKICBGb28gZm9vOwogIEZvbyAqbmV3QUMgPSAmZm9vOwogIHN0ZDo6Y291dCA8PCAibmV3QUM6IiA8PCBuZXdBQyA8PCBzdGQ6OmVuZGw7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgIChuZXdBQy0+KmZ1bmN0aW9uc1tpXSkoImhpIik7CiAgfQogIHJldHVybiAwOwp9Cg==