The std::string class has no builtin conversion to the char* type: std::string object is not a char array. It has c_str() member function - it returns const char* pointer to the string contents buffer, but don't try to modify the string text directly (that's why it's const pointer).
Why you declare your class constructors with char* parameters? Do you want to change passed char arrays in constructors? You will scarcely do that. So declare these parameters as const char* pointers then add yet another constructor for Pensioner and Customer classes, for example:
class Customer {
public: // parameter names for example only
Customer(const char* a, const char* b, const char* c, long d);
Customer(const string& a, const string& b, const string& c, long d); or use constructors with const char* parameters as
customers[size++] = new Customer(first.c_str(), last.c_str(), phone.c_str(), Nofcalls);