Сделать тип, который ведет себя как char* (то есть не овнит, дешево создается/копируется) и который содержит _нужное_ поведение - сравнивает строки как строки, а не как указатели.
Ключ - строка уже проверялось, время теряется на копирование и более тяжелое qHash. Нужен именно адрес, но тогда как обеспечить его валидность?
C++ (Qt)
static const std::string str_param1("param1");
static const std::string str_param2("param2");
Если я обращаюсь к хешу используя именно эти константы - все хорошо. И мне совсем не нужна возможность "сравнивать содержимое", нужно сделать такой доступ невозможным, напр
C++ (Qt)
mHash["param1"] // должна быть ошибка компиляции
Намечал так
C++ (Qt)
class CStringKey : protected std::string {
public:
explicit CStringKey( const char * );
const char * c_str( void ) const;
};
Или лучше конструировать только через статик метод. Но как-то выглядит уж очень великом
Какие стандартные средства есть для этого ?