Сортировка по строкам в классе

Создается массив объектов класса, в каждом несколько полей со строками, (1)нужно дать пользователю выбрать по какому полю он желает произвести сортировку(по какому принципу будет происходить, не важно). Сделал пробно только по одному полю, но не сортирует. (2) Еще один вопрос, уже давно пытаюсь понять, как в классах использовать char(как раз закомментировал метод, там данные нужны в виде char), ибо не понимаю как правильно делать запись, подскажите пожалуйста(Отметил, как делаю в коде ). Есть вариант каждый символ копировать, но думаю есть быстрее способ.

    class Mobile {
    public:
        string name; // Например  char *name = new char[30]. В конструкторе strncpy(this->name, name, 30 )
        string date;  
        int number; 
        string address;

        Mobile() {};
        Mobile(string nam, string de, int num, string address) {
            name = nam;
            date = de;
            number = num;
            this->address = address;
        }
        string Raddress() {
            return address;
        }
    };

    bool comp(Mobile& s1, Mobile& s2) {
        return s1.address > s2.address;
    }
        /*  Еще есть вот такой вариант, но не пробовал, потому что не знаю как передать параметры в sort
        Ну и еще данные в виде char    
        bool comp(Mobile *s1, Mobile* s2) {
                return ( strcmp(s1->name, s2->name) < 0 ) ? true : false;
            }
        */

    int main()
    {
        list<Mobile> List;
        Mobile abonent[3];

        abonent[0] = Mobile("Q", "w", 13, "egw");
        abonent[1] = Mobile("qqwe", "gggge", 13, "qwertyy");
        abonent[2] = Mobile("qwerweefgr", "qewfewwe", 15, "q");

        List.sort(comp);
        cout << "Сортировка" << endl;
    }

Ответы (0 шт):